본문 바로가기
파이썬

파이썬 현재 모듈에서 setattr ()을 어떻게 호출합니까?

by º기록 2020. 11. 26.
반응형

현재 모듈에서 변수를 설정하기 위해 첫 번째 매개 변수 " object "를 함수 setattr (object, name, value) 에 전달해야합니까?

예를 들면 :

setattr(object, "SOME_CONSTANT", 42);

다음과 같은 효과를 제공합니다.

SOME_CONSTANT = 42

이러한 행을 포함하는 모듈 내에서 (올바른 객체 사용).

모듈 수준에서 동적으로 여러 값을 생성하고 있으며 모듈 수준에서 __ getattr __ 를 정의 할 수 없으므로 이것이 제 폴백입니다.

 

해결 방법

 

import sys

thismodule = sys.modules[__name__]

setattr(thismodule, name, value)

또는 setattr 를 사용하지 않고 (질문의 문자를 깨뜨리지 만 동일한 실제 목적을 충족 함 ;-) :

globals()[name] = value

참고 : 모듈 범위에서 후자는 다음과 같습니다.

vars()[name] = value

좀 더 간결하지만 함수 내에서 작동하지 않습니다 ( vars () 는 호출되는 범위의 변수를 제공합니다. 전역 범위에서 호출 될 때 모듈의 변수, 그런 다음 괜찮습니다.) R / W를 사용하려면 함수에서 호출 할 때 함수의 변수를 사용하고 R / O로 처리해야합니다. Python 온라인 문서는이 특정 구분에 대해 약간 혼란 스러울 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/2933470

 

 

반응형

댓글