[PYTHON] 클래스 객체에 대한 사용자 정의 문자열 표현을 만드는 방법은 무엇입니까?
PYTHON클래스 객체에 대한 사용자 정의 문자열 표현을 만드는 방법은 무엇입니까?
다음 클래스를 고려하십시오.
class foo(object):
pass
기본 문자열 표현은 다음과 같습니다.
>>> str(foo)
"<class '__main__.foo'>"
이 디스플레이를 사용자 정의 문자열로 만들려면 어떻게해야합니까?
해결법
-
==============================
1.클래스의 메타 클래스에서 __str __ () 또는 __repr __ ()을 구현하십시오.
클래스의 메타 클래스에서 __str __ () 또는 __repr __ ()을 구현하십시오.
class MC(type): def __repr__(self): return 'Wahaha!' class C(object): __metaclass__ = MC print C
읽을 수있는 문자열을 의미하는 경우 __str__을 사용하고 모호하지 않은 표현에는 __repr__을 사용하십시오.
-
==============================
2.
class foo(object): def __str__(self): return "representation" def __unicode__(self): return u"representation"
-
==============================
3.처음에 __repr__과 __str__ 중 하나를 선택해야한다면, 기본적으로 구현 __str__은 정의되지 않았을 때 __repr__을 호출합니다.
처음에 __repr__과 __str__ 중 하나를 선택해야한다면, 기본적으로 구현 __str__은 정의되지 않았을 때 __repr__을 호출합니다.
사용자 정의 벡터 3 예제 :
class Vector3(object): def __init__(self, args): self.x = args[0] self.y = args[1] self.z = args[2] def __repr__(self): return "x: {0}, y: {1}, z: {2}".format(self.x, self.y, self.z) def __str__(self): return "Vector3([{0},{1},{2}])".format(self.x, self.y, self.z)
이 예에서 repr은 직접 소비 / 실행될 수있는 문자열을 반환하지만 str은 디버그 출력으로 더 유용합니다.
v = Vector3([1,2,3]) print repr(v) #Vector3([1,2,3]) print str(v) #Vector(x:1, y:2, z:3)
from https://stackoverflow.com/questions/4932438/how-to-create-a-custom-string-representation-for-a-class-object by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 Factorial을위한 함수 (0) | 2018.10.07 |
---|---|
[PYTHON] 대 / 소문자를 구분하지 않음 (0) | 2018.10.07 |
[PYTHON] TypeError 수정 방법 : 해시하기 전에 유니 코드 개체를 인코딩해야합니까? (0) | 2018.10.07 |
[PYTHON] 파이썬 : 목록 색인 범위를 벗어난 오류 (0) | 2018.10.07 |
[PYTHON] 파이썬 프로세스 풀 비 데믹? (0) | 2018.10.07 |