[PYTHON] 클래스 이름을 동적으로 설정하는 방법은 무엇입니까?
PYTHON클래스 이름을 동적으로 설정하는 방법은 무엇입니까?
그 인수에서 파생 된 클래스를 만드는 함수가 있습니다.
def factory(BaseClass) :
class NewClass(BaseClass) : pass
return NewClass
이제이 클래스를 사용하여 새 클래스를 만들면 클래스의 이름이 모두 같고 인스턴스의 유형이 같아 보입니다.
NewA = factory(ClassA)
NewB = factory(ClassB)
print type(NewA()) # <class __main__.NewClass>
print type(NewB()) # <class __main__.NewClass>
__name__ 속성을 수동으로 설정하기위한 적절한 수정이 있습니까?
NewA.__name__ = 'NewA'
print type(NewA()) # <class __main__.NewA>
내가있을 때 내가 정해야 할 다른 것들이 있습니까?
해결법
-
==============================
1.네, __name__을 설정하는 것이 올바른 일입니다. 클래스 이름을 조정하기 위해 다른 것을 설정할 필요가 없습니다.
네, __name__을 설정하는 것이 올바른 일입니다. 클래스 이름을 조정하기 위해 다른 것을 설정할 필요가 없습니다.
예 :
def factory(BaseClass) : class NewClass(BaseClass): pass NewClass.__name__ = "factory_%s" % BaseClass.__name__ return NewClass
타입은 여기에서 사용하는 것은 잘못되었습니다. 파이썬의 일반적인 클래스 구문으로 클래스를 정의하는 대신, 모든 클래스 속성을 수동으로 설정하게합니다. 예를 들어 손으로 클래스를 만드는 데 사용됩니다. 기본 클래스의 배열을 가지고 있고 그것을 사용하여 클래스를 만들고 싶다면 (파이썬의 클래스 구문으로는 할 수 없다). 여기서 사용하지 마십시오.
-
==============================
2.type () 함수를 세 개의 인수와 함께 사용하여 체크 아웃하십시오. 다음 코드는 객체를 기본 유형으로 사용하고 초기 속성이없는 새 클래스 "NewA"를 만듭니다.
type () 함수를 세 개의 인수와 함께 사용하여 체크 아웃하십시오. 다음 코드는 객체를 기본 유형으로 사용하고 초기 속성이없는 새 클래스 "NewA"를 만듭니다.
>>> type('NewA', (object,), {}) <class '__main__.NewA'>
from https://stackoverflow.com/questions/5352781/how-to-set-class-names-dynamically by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Javascript에서 파이썬의 dir과 같습니다. (0) | 2018.11.19 |
---|---|
[PYTHON] matplotlib를 사용하여 레이블로 포인트 애니메이트하기 (0) | 2018.11.19 |
[PYTHON] 여러 범위의 파이썬 공용체 (0) | 2018.11.19 |
[PYTHON] 파이썬에서 큰 따옴표 셸 명령을 subprocess.Popen ()에 전달 하시겠습니까? (0) | 2018.11.19 |
[PYTHON] matplotlib에서 축 번호 형식을 쉼표로 수천 자로 어떻게 포맷합니까? (0) | 2018.11.19 |