python 클래스 공유 변수 조작

우 리 는 하나의 예 로 이 문 제 를 전개 했다.
질문:
python 클래스 대상 A,먼저 A 대상 의 인 스 턴 스 b 를 예화 한 다음 에 A 대상 에 게 공유 변수 xxx 를 추가 한 다음 에 c 를 예화 합 니 다.b 와 c 는 모두 변수 xxx 가 있 습 니까?
해답:
python 클래스 공유 변 수 는 실례 화 없 이 호출 할 수 있 습 니 다.예 를 들 어 클래스 A 는 XXX 클래스 공유 변 수 를 가지 고 있 습 니 다.직접 A.xxx 를 사용 하면 호출 할 수 있 습 니 다.
첫 번 째 단계:b 가 실례 화 될 때 클래스 A 에 공유 변수 xxx 가 없습니다.이 때 실례 b 는 이 변수 가 없습니다.
두 번 째 단계:클래스 A 에 공유 변수 XXX 를 추가 합 니 다.추가 가 완료 되면 클래스 A 가 생 성 한 인 스 턴 스 에 변수 XXX 를 자동 으로 추가 합 니 다.따라서 b 인 스 턴 스 는 A 에 공유 변수 XXX 를 추가 한 후에 도 변수 XXX 가 있 습 니 다.
세 번 째 단계:마지막 으로 c 를 예화 할 때 클래스 A 는 원래 클래스 공유 변수 xxx 가 있 기 때문에 c 인 스 턴 스 에 도 변수 xxx 가 있 습 니 다.
결론:인 스 턴 스 b c 에는 변수 xxx 가 있 습 니 다.
세그먼트 코드 검증

#coding=utf-8
class A():
  pass
b = A()
print(dir(b),"b   ,       ")

A.xxx=10
c = A()
print(dir(b),"b   ,       ")
print(dir(c),"b   ")
코드 실행 결과

결과 에 따 르 면 클래스 공유 변수 xxx 를 추가 한 후에 b c 인 스 턴 스 는 모두 변수 xxx 가 있 음 을 알 수 있다.
PYTHON 다 중 모듈 파일 공유 변수
우선,5 개의 Python 파일 이 있 습 니 다.공유 변수 x 는 glovar.py 에 존재 합 니 다.임의의 모듈 에서 변경 할 수 있 습 니 다.변경 후 임의의 모듈 에서 가 져 온 값 이 같 습 니 다.이것 이 바로 다 중 모듈 파일 공유 변수 입 니 다.

#5      
c:\test\main.py
c:\test\show.py
c:\test\test.py
c:\test\common\__init__.py #   
c:\test\common\glovar.py
c:\test\common\calc.py
#glovar.py
x = 1

#show.py
from comon import glovar
class Show:
 def showchange(self):
  if glovar.x!=1:
   print 'show x change'
  else:
   print 'show x=1'

#test.py
from comon.glovar import x
class Test:
 def testchange(self):
  if x!=1:
   print 'test x change'
  else:
   print 'test x=1'

#calc.py
import glovar
class Calc:
 def add(self):
  glovar.x+=1

#main.py
from comon import glovar
 
c = Calc()
c.add()
 
s = Show()
s.showchange()
 
t = Test()
t.testchange()
main.py 실행

#  
show x change
test x=1
위 에 있 는 이 파일 들 은 test.py 실 패 를 제외 하고 다른 파일 들 이 변 수 를 공유 할 수 있 습 니 다.python 의 네 임 스페이스 가 같 기 때 문 입 니 다.import 가 올 바 르 기 때 문 입 니 다.
이 세 가 지 를 보 겠 습 니 다.

import glovar
from comon import glovar
from common.glovar import x
Python import 패키지 의 메커니즘 은 import 가 들 어 온 것 과 기본 시스템 의 module 입 니 다.모두 sys.module 사전 에 넣 었 습 니 다.여러 개의 py 파일 이 다시 import 될 때 sys.module 에 가서 import 가 되 었 는 지 확인 합 니 다.import 가 되 었 으 면 import 를 반복 하지 않 습 니 다.그렇지 않 으 면 import 가 들 어 옵 니 다.
===
import glovar 와 from comon import glovar 의 네 임 스페이스 는 같 습 니 다.key 는 모두 glovar 입 니 다.
from common.glovar import x 는 다 릅 니 다.test.py 에서 이렇게 from import 는 test.py 파일 에 코드 x=1 을 쓴 것 과 같 습 니 다.
이때 x 는 test 자신의 네 임 스페이스 의 변수 입 니 다.그래서 x 는 test.py 에서 만 효과 가 있 고 자신 이 x 에 대해 어떻게 수정 하 는 지 지루 하 며 glovar 의 x 에 영향 을 줄 수 없습니다.

#    
from glovar import x
#   
improt glovar
x= glovar.x
#   x   ,           x
#    x=2 ,      glovar.x
다음은 설명.

#    glovar  ,  namespace glovar
import glovar
 
# common     glovar,  namespace glovar
from comon import glovar
 
# common    glovar     x=1,  namespace     ,      test.py
from common.glovar import x 
따라서 변 수 를 공유 할 필요 가 있 으 면 from file import x 라 는 형식 을 사용 하지 않 고 import file 을 사용 한 다음 file.x 를 통 해 사용 할 수 있 습 니 다.그리고 file.x=abc 는 수정 할 수 있 습 니 다.이렇게 하면 전역 적 인 변 수 를 이렇게 처리 하면 공유 할 수 있다.즉,독립 된 namespace 를 유지 하면 python 이 다시 가 져 오지 않 고 공 유 를 실현 할 수 있 습 니 다.
이상 의 python 류 공유 변수 작업 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기