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.pyx = 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 류 공유 변수 작업 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.