Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #76761 > unrolled thread
| Started by | luofeiyu <elearn2014@gmail.com> |
|---|---|
| First post | 2014-08-22 09:25 +0800 |
| Last post | 2014-08-22 22:44 -0700 |
| Articles | 2 — 2 participants |
Back to article view | Back to comp.lang.python
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
| From | luofeiyu <elearn2014@gmail.com> |
|---|---|
| Date | 2014-08-22 09:25 +0800 |
| Subject | the output in reference of descriptor. |
| Message-ID | <mailman.13266.1408670735.18130.python-list@python.org> |
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?
[toc] | [next] | [standalone]
| From | CHIN Dihedral <dihedral88888@gmail.com> |
|---|---|
| Date | 2014-08-22 22:44 -0700 |
| Message-ID | <0b731225-3572-4357-aba5-2284dbaa2d65@googlegroups.com> |
| In reply to | #76761 |
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?
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web