여러 변수로 제어해야하는 다양한 객체가 많이있는 모듈을 만들고 있습니다.모듈에 정의 된 객체와 변수를 공유하는 Pythonic 방법은 무엇입니까?
이것이 C 인 경우 개체에 변수/개체에 대한 포인터를 전달하고 응용 프로그램에서 필요에 따라 변수를 변경하게하고 모듈의 개체가 새 변수를 "보게"됩니다 값. 애플리케이션에서
class foo(object):
def __init__(self, varToWatch):
self.varToWatch = varToWatch
def DoSomething(self):
print self.varToWatch
, bar.py : 모듈 foo.py에서
import foo
x = "before"
y = foo.foo(x)
y.DoSomething()
x = "after"
y.DoSomething()
이것은 물론, 작동하지 않는 때문에, X의 원래 값 (또는 레퍼런스 x의 원래 값으로)가 y에 저장됩니다. "전에" "전에"얻을.
그래서, 나는
- 글로벌의 이름을 전달하고, foo는의 이름으로 세계를 참조 ...보십시오. 아니요, 글로벌은 모듈이 아닌 애플리케이션의 공간에 있기 때문입니다.
- foo 네임 스페이스에서 global을 사용하고 있지만 변수 이름으로 해당 공간을 처리하는 방법을 모르며 foo를 가져 오는 대신 foo에서 import *를하고 있습니다. 이것을 바꾸는 것은 고통 스러울 것입니다.
- 모듈에서 사전을 만들고 사전에있는 키 이름을 모듈의 개체로 전달하십시오. 응용 프로그램에서 사전 내용을 조작하십시오. 기본적으로 저는 새로운 글로벌 공간을 정의하고 변수를 고집합니다. 나는 그것이 작동하지 않을 이유를 보지 못하지만, 나에게 깔끔한 느낌을 준다. 파이썬에 익숙하지 않은가?
필자가 보았던 아름다운 솔루션을 파이썬에서 쉽게 찾을 수 없어 뭔가 놓친 것 같습니다.
제안 사항?
TIA, - 팀.
()에
동등한 인쇄 varToWatch 인쇄 self.varToWatch – Ponkadoodle
SHO '그런가되어야한다. 감사. – tbroberg