클래스 작성시 데이터 설명자를 사용하는 동안 클래스에서 getattr 기능의 이상한 동작이 발생했습니다. 우변은 String
의 인스턴스를 반환하면서데이터 설명자가있는 클래스에서 getattr 사용
# this is a data descriptor
class String(object):
def __get__(self, instance, owner):
pass
def __set__(self, instance, value):
pass
# This defines a class A with 'dot' notation support for attribute 'a'
class A(object):
a = String()
obj = A()
assert getattr(A, 'a') is A.__dict__['a']
# This raises AssertionError
LHS는 빈 문자열을 반환합니다. 개체의 getattr
은 __dict__
내부의 키 값을 가져 오는 것이라고 생각했습니다. getattr
함수는 클래스 객체에서 어떻게 작동합니까?
'None'이 아닌 빈 문자열을 반환합니까? – Bakuriu
* LHS는 빈 문자열을 반환합니다. * 확실합니까? 나는 노력하면서'None'을 반환합니다. 왜 안 되니? 당신은 디스크립터에서 그렇게 말합니다! – glglgl
BTW :'A.a'는 ** 아닙니다 **는'.__ dict __ [ 'a']'와 같습니다. 첫 번째 요소 만 "전체 특성 메커니즘"을 트리거합니다. – Bakuriu