class Mysuper(object):
def aaa(self):
print "In Superclass"
class Mysub(Mysuper):
def aaa(self):
ss = super(Mysub, self)
print dir(ss) , type(ss)
print ss.__dict__
ss.aaa()
print "In Subclass"
>>> ob = Mysub()
>>> ob.aaa()
['__class__', '__delattr__', '__doc__', '__format__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__self_class__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__thisclass__'] <type 'super'>
{}
In Superclass
In Subclass
>>>
super
에 대한 속성이 왜 aaa
으로 나열되지 않습니까? 속성이 나열되어 있지 않으므로 super
오브젝트 ss
은 aaa()
을 Mysuper
클래스로 호출 할 수 있습니까?수퍼 객체의 속성
왜 'aaa' 속성이 있어야할까요? 이미'ss'는'Mysuper' 클래스도 인스턴스도 아니라' 인스턴스의 인스턴스라는 결론을 내 렸습니다. 왜'super '인스턴스가'aaa' 멤버를 가져야 하는가? –
@Rogalski 다른 검색어를 추가했습니다. 위를 참조하십시오. – abc
기본적으로 '__getattribute__' 마법입니다. [소스를 사용하세요, Luke!] (https://github.com/python/cpython/blob/master/Objects/typeobject.c#L7393). 'super_getattro'는 당신이 원하는 것입니다. –