__repr__, __dict__
12 Feb 2018 | python repr dictObeject의 속성값을 알고싶은데…
Obeject의 속성값을 알고싶은데 print()
로 찍어보면 <__main__.OrigClass object at 0x10bedd0b8>
이런 식으로만 나온다.
이럴 경우, __repr__
을 통해 알 수 있도록 만들 수 있다.
물론 __repr__
은 eval
함수에 넘겼을 때, 정확히 똑같은 object가 만들어지는 string representation을 만들도록 권장한다. __dict__
함수를 사용해서 속성을 볼 수도 있다!
코드
class OrigClass(object):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
class RepresentativeClass(OrigClass):
def __repr__(self):
return "RepresentativeClass({}, {})".format(self.x, self.y)
if __name__ == '__main__':
o = OrigClass(10, 20)
r = RepresentativeClass(10, 20)
print(o) # 그냥 돌리니까 메모리 주소만 나오겠지...
print(r) # 요 경우 RepresentativeClass(10, 20)가 나오겠다..
r2 = eval(repr(r)) # 이걸 다시 eval에 넘기면
print(r2) # 같은 attr을 갖는 객체를 만들 수 있다!
print(o.__dict__) # 속성값만 알고싶을 때..
결과값
<__main__.OrigClass object at 0x106f1e0b8>
RepresentativeClass(10, 20)
RepresentativeClass(10, 20)
{'y': 20, 'x': 10}