반응형
Python에서 객체
클래스는 모든 (새 스타일) 클래스의 루트 수퍼 클래스 역할을합니다. 최소한 기본적으로 str
및 repr
을 object
하위 클래스의 "클래스 인스턴스"에 적용하면 동일한 결과가 생성됩니다.
>>> class spam(object): pass
...
>>> str(spam)
"<class '__main__.spam'>"
>>> str(spam) == repr(spam)
나는 str을 적용하는 것을 제외하고는 모든면에서
및 object
와 동일한 object
의 서브 클래스를 정의하고 싶습니다. repr
to fancyobject
자체는 다른 출력을 생성합니다.
>>> class ham(fancyobject): pass
...
>>> str(ham)
'ham'
>>> repr(ham)
"<class '__main__.ham'>"
파이썬에서 이것을 수행하는 방법이 있습니까?
추신 : 저는 __ str __
특수 메서드를 알고 있지만 A
클래스가 __ str __
을 재정의하면 재정의 메서드가 A
자체에서 호출 될 때가 아니라 A
의 인스턴스에서 str
이 호출 될 때만 호출됩니다. 즉 :
>>> class A(object):
... def __str__(self):
... return 'from new __str__: ' + object.__str__(self)
...
>>> str(A())
'from new __str__: <__main__.A object at 0x7f79c62a5310>'
>>> str(A)
"<class '__main__.A'>"
해결 방법
실제로 객체 인스턴스와 동일한 메커니즘이 유형에 적용됩니다. 유형은 객체 자체 일 뿐이므로 "metaclass"라고하는 자신의 유형에서 __ str __ ()
메서드를 호출하여 문자열로 변환됩니다. 따라서 메타 클래스의 __ str __ ()
메서드를 덮어 써야합니다.
class fancytype(type):
def __str__(self):
return self.__name__
class ham(object):
__metaclass__ = fancytype
print ham
인쇄물
ham
참조 페이지 https://stackoverflow.com/questions/8144026
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python Paramiko에서 명령을 실행 한 후 어떻게 결과를 저장할 수 있습니까? (0) | 2020.09.25 |
---|---|
파이썬 Flask와 Tornado를 함께 사용하십니까? (0) | 2020.09.25 |
파이썬 Google App Engine에서 파일 업로드 (0) | 2020.09.25 |
파이썬 matplotlib에서 상관 관계 그래프 그리기 (0) | 2020.09.25 |
파이썬 Python에서 파일 gzip (0) | 2020.09.25 |
댓글