해당 모듈 내에서 모듈에 대한 참조를 얻으려면 어떻게합니까? 또한 해당 모듈을 포함하는 패키지에 대한 참조를 얻으려면 어떻게합니까?Python : 모듈 자체의 모듈에 대한 참조를 얻으려면 어떻게해야합니까?
답변
import sys
current_module = sys.modules[__name__]
을 제외하고는 정확하지 않습니다. 참조가 유지되도록 보장되는 곳이 없다고 생각합니다. 다시로드하면 실제로 작동하지 않을 것입니다. 맞습니까? –
다시로드하면 동일한 모듈 객체가 다시 사용됩니다. 새로운 모듈 객체는 생성되지 않으므로 다시로드 할 때 여전히 올바르다. – bukzor
해당 모듈에 클래스가있는 경우 클래스의 __module__
속성은 클래스의 모듈 이름입니다. 따라서 sys.modules[klass.__module__]
을 통해 모듈에 액세스 할 수 있습니다. 이것은 함수에서도 작동합니다.
당신은 sys.modules
사전에서 찾을 수 있습니다 __name__
모듈 참조를 사용하여 현재 모듈의 이름을 얻을 수 있습니다.
current_module = __import__(__name__)
하는 것이 더 수입이없는주의 : - 당신의 취향에 따라 달라집니다 - 간단
파이썬에게 틀림없이 sys 모듈을 가져올하지 않습니다 documentation문서 링크에 감사드립니다. –
또 하나 개의 기술을 참조하십시오. 파이썬은 각 모듈을 한 번만 가져옵니다.
mymod.init(mymod)
적합하지하지만 내 현재 사용-경우에 작동합니다
이것은 sys를 가져 오는 것을 피하는 정말 좋은 방법입니다. 이 접근법에 잠재적 인 단점이 있습니까? – JeremyDouglass
@JeremyDouglass. 내가 아는 것은 아닙니다. __import__는 합법적이고 문서화 된 내장 함수입니다 (유일한 __xx__ 함수). 'importlib'패키지로 대체 할 수 있습니다 (가져와야합니다). 어쩌면 - 절대로 나에게 일어난 일이 아니다 - 같은 이름을 가진 모듈이 sys.path에서 사용 가능하다면 상대/절대 가져 오기와 관련된 문제가 발생할 수있다.이 경우 함수의 'level'인수로 해결할 수있다. – Uri
당신은 외부에서 그것을에 전달할 수 있습니다.
- 1. CAL에서 모듈 인스턴스에 대한 참조를 얻으려면 어떻게해야합니까?
- 2. 모듈에 대한 참조를 얻는 방법?
- 3. 모듈에 대한 Python 명명 규칙
- 4. 다른 클래스에 대한 참조를 제대로 얻으려면 어떻게해야합니까?
- 5. ActionFilter에서 ModelState 속성에 대한 참조를 얻으려면 어떻게해야합니까?
- 6. 데이터리스트의 OnItemBound에서 컨트롤에 대한 참조를 얻으려면 어떻게해야합니까?
- 7. 함수 내에서 함수에 대한 참조를 얻으려면 어떻게해야합니까?
- 8. 하위 뷰에 대한 rootViewController에 대한 참조를 얻으려면 어떻게해야합니까?
- 9. Python unittest가 별도의 모듈에 있어야합니까?
- 10. VS 2008에서 F # 언어 참조를 얻으려면 어떻게해야합니까?
- 11. 현재 활성 모달 폼에 대한 참조를 얻으려면 어떻게해야합니까?
- 12. Java의 익명의 내부 클래스에서 동봉하는 클래스에 대한 참조를 얻으려면 어떻게해야합니까?
- 13. 바운드 DataGridViewComboBoxCell에서 기본 객체에 대한 참조를 얻으려면 어떻게해야합니까?
- 14. C99 코드에 대한 문자와 정확한 식별자 상호 참조를 얻으려면 어떻게해야합니까?
- 15. Eclipse 플러그인에서 현재 프로젝트에 대한 참조를 얻으려면 어떻게해야합니까?
- 16. Apple Script : iTunes에서 다음 트랙에 대한 참조를 얻으려면 어떻게해야합니까?
- 17. WatiN : 텍스트를 찾을 때 포함하는 요소에 대한 참조를 얻으려면 어떻게해야합니까?
- 18. 현재 표시된 Java Swing JDialog 상자에 대한 참조를 얻으려면 어떻게해야합니까?
- 19. 변수를 플래시로 선언 한 연금술 asm에 대한 참조를 얻으려면 어떻게해야합니까?
- 20. Python IDLE에서 실행중인 모듈과 다른 모듈에 중단 점을 설정하려면 어떻게해야합니까?
- 21. Java에서 enum 자체의 내부에서 enum 값을 얻으려면 어떻게해야합니까?
- 22. Python PAM 모듈에 대한 보안 문제가 있습니까?
- 23. 프리즘 모듈에 대한 아이콘 포함
- 24. TDSProviderConnection.SQLConnection에 대한 원격 SQLConnection을 얻으려면 어떻게해야합니까?
- 25. Python 3.1.1에서 dll의 대상 플랫폼 정보를 얻으려면 어떻게해야합니까?
- 26. Python - 특정 인스턴스에 대한 모든 참조를 인쇄합니다.
- 27. Python : 참조에 대한 참조를 만드는 방법은 무엇입니까?
- 28. LinkedHashMap에 대한 keyIterator를 얻으려면 어떻게해야합니까?
- 29. Python : datetime.timedelta 객체에서 시간을 얻으려면 어떻게해야합니까?
- 30. Python 스크립트로 Perl 스크립트의 결과를 얻으려면 어떻게해야합니까?
** 모듈 범위 ** (예 : 함수 또는 클래스 외부의 BLAH = 10)에 변수가 있고 BLAH라는 클래스/함수 변수 ** 및 변수가 있기 때문에이 질문을하는 것 같습니다. 당신은 차별화되기를 원합니다. 여기서 유효한 질문은 다음과 같습니다. ** 필수 사항입니까? ** 스코프 규칙은 실수로 악명이 날 정도로 악명이 높습니다. 특히 6 개월 후에 코드를 사용하는 '바보'가 특히 그렇습니다. 이런 트릭은 거의 필요하지 않습니다. 나는 종종 혼란스럽고 나중에 잘못 수정되기 때문에 완전히 피하려고합니다. –
@ KevinJ.Rice "당신 (6 개월 후, 당신의 코드)을 선택하는 '바보'가 내 하루를 보냈습니다! – arctelix
왜 그가 질문을하는 데 관심이 있습니까? 이 작업을 수행하는 데 필요한 충분한 이유가 있습니다. 모듈을 다시로드하면 –