흥미로운 응용 프로그램이 있고 다른 모듈의 전역 변수에 액세스하고 싶습니다.
현재 모듈 x가 있습니다.
from pkg.mod import *
네임 스페이스를 얻기 위해 foo
.
내 pkg.mod는 다음과 같습니다.
import x
foo = 0
# do some stuff
foo = myClass()
그 모든 것이 훌륭하게 작동하지만, 대부분이 나쁘기 때문에 그렇게하고 싶지 않습니다.
다음을 시도하면
from pkg import mod
순환 종속성 문제가 발생합니다. ImportError: cannot import name mod
나에게 의미가 있습니다.
내가하고 싶은 것은
from pkg.mod import foo
그러나 그것은 또한 나에게 가져 오기 이름 오류를 제공합니다. ImportError: cannot import name foo
정확히 왜 그런지 잘 모르겠지만, 특별히 변수를 가져올 수 있다고 생각하지 않습니다.
어쨌든 foo
올바른 관행에 따라 가져올 수 있습니까?
---편집하다---
공유 변수를 제거하고 그런 식으로 세 번째 모듈에 넣으려고 시도했습니다.
pkg.y
foo = 0
pkg.mod
from pkg.y import foo
foo = myClass()
x.dostuff()
엑스
from pkg.y import foo
def dostuff():
print(foo)
이제 x는 foo가 여전히 0이라고 생각합니다. (mod가 x를 호출하므로 먼저 발생한다는 것을 보장 할 수 있습니다.)
진정한 전역 변수가 필요할 때 trueglobals.py라는 모듈을 만드는 것이 더 깔끔합니다. 비워 둘 수 있지만 적절한 문서화를 위해 ...
# -*- coding: utf-8 -*-
# Object references that are used extensively across many modules are
# stored here.
# someObject1 - instantiated in main.py
# someObject2 - instantiated in someothermodule.py
개체를 인스턴스화하는 모듈에서 ...
import trueglobals
trueglobals.someObject1 = myClass(somevar)
객체가 필요한 모든 모듈에서 ...
import trueglobals
localVar = trueglobals.someObject1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다