Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #76761
| Date | 2014-08-22 09:25 +0800 |
|---|---|
| From | luofeiyu <elearn2014@gmail.com> |
| Subject | the output in reference of descriptor. |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.13266.1408670735.18130.python-list@python.org> (permalink) |
class C(object):
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?
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
the output in reference of descriptor. luofeiyu <elearn2014@gmail.com> - 2014-08-22 09:25 +0800 Re: the output in reference of descriptor. CHIN Dihedral <dihedral88888@gmail.com> - 2014-08-22 22:44 -0700
csiph-web