X-Received: by 10.66.90.193 with SMTP id by1mr6232949pab.30.1408772653852; Fri, 22 Aug 2014 22:44:13 -0700 (PDT) X-Received: by 10.50.117.7 with SMTP id ka7mr72068igb.2.1408772653751; Fri, 22 Aug 2014 22:44:13 -0700 (PDT) Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!r2no5354301igi.0!news-out.google.com!aw9ni2igc.0!nntp.google.com!r2no5354295igi.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.python Date: Fri, 22 Aug 2014 22:44:13 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=123.192.37.172; posting-account=5JdMBQoAAABHnS4mjpqEzxnmWtgiiVNw NNTP-Posting-Host: 123.192.37.172 References: User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <0b731225-3572-4357-aba5-2284dbaa2d65@googlegroups.com> Subject: Re: the output in reference of descriptor. From: CHIN Dihedral Injection-Date: Sat, 23 Aug 2014 05:44:13 +0000 Content-Type: text/plain; charset=ISO-8859-1 Xref: csiph.com comp.lang.python:76840 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> > '__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> > '__main__. > > C2'> > > __getattribute__() is called > > 'abc' > > > > Why the result of c2.d.a is not : > > > > __get__() is called <__main__.C2 object at 0x000000000297BE10> > '__main__. > > C2'> > > __getattribute__() is called > > 'abc' > > > > Why the` return self` in the __get__ method in class C does not work?