Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #76761 > unrolled thread

the output in reference of descriptor.

Started byluofeiyu <elearn2014@gmail.com>
First post2014-08-22 09:25 +0800
Last post2014-08-22 22:44 -0700
Articles 2 — 2 participants

Back to article view | Back to comp.lang.python


Contents

  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

#76761 — the output in reference of descriptor.

Fromluofeiyu <elearn2014@gmail.com>
Date2014-08-22 09:25 +0800
Subjectthe 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]


#76840

FromCHIN Dihedral <dihedral88888@gmail.com>
Date2014-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