On Friday, August 22, 2014 9:25:02 AM UTC+8, luofeiyu wrote: > class C(object): >
Well, in python class is treated as onte of the first class built in operations. class "new_class_ame" ( parentclasses) Please check this syntax first in Python. > a = 'abc' > > def __getattribute__(self, *args, **kwargs): > > print("__getattribute__() is called") > > return object.__getattribute__(self, *args, **kwargs) > > def __getattr__(self, name): > > print("__getattr__() is called ") > > return name + " from getattr" > > def __get__(self, instance, owner): > > print("__get__() is called", instance, owner) > > return self > > def foo(self, x): > > print(x) > > > > > > class C2(object): > > d = C() > > > > > > >>> c2.d > > __get__() is called <__main__.C2 object at 0x000000000297BE10> <class > > '__main__. > > C2'> > > <__main__.C object at 0x000000000297BBA8> > > > > I understant the result ,c2.d trigger the __get__ method in class C. > > def __get__(self, instance, owner): > > print("__get__() is called", instance, owner) > > return self > > > > It print "__get__() is called", instance, owner and return self > > `<__main__.C object at 0x000000000297BBA8>` > > > > > > >>> c2.d.a > > __get__() is called <__main__.C2 object at 0x000000000297BE10> <class > > '__main__. > > C2'> > > __getattribute__() is called > > 'abc' > > > > Why the result of c2.d.a is not : > > > > __get__() is called <__main__.C2 object at 0x000000000297BE10> <class > > '__main__. > > C2'> > > __getattribute__() is called > > 'abc' > > > > Why the` return self` in the __get__ method in class C does not work? -- https://mail.python.org/mailman/listinfo/python-list