__getattribute__ doesn't work on 'type' type for '__class__'
Maric Michaud
maric at aristote.info
Tue Jun 20 13:26:08 EDT 2006
Le Mardi 20 Juin 2006 18:36, Barry Kelly a écrit :
> Yet when I try this with the 'type' type, it doesn't work:
>
> ---8<---
>
> >>> x.__class__.__class__
>
> <type 'type'>
>
> >>> x.__class__.__getattribute__('__class__')
>
you're looking for getattr :
In [11]: getattr(object, '__class__')
Out[12]: <type 'type'>
In [13]: getattr(str, 'translate')
Out[13]: <method 'translate' of 'str' objects>
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: descriptor '__getattribute__' requires a 'int' object but
> received a 'str'
> --->8---
>
> Why is this?
__getattribute__ is the descriptor interface, that means... humm see the doc
i'm not enough skilled in english to explain in few words...
but in python :
In [27]: 'aaa'.replace('a', 'z')
Out[27]: 'zzz'
is exactly the same as :
In [25]: str.__getattribute__('aaa', 'replace')('a', 'z')
Out[25]: 'zzz'
or even :
In [26]: object.__getattribute__('aaa', 'replace')('a', 'z')
Out[26]: 'zzz'
--
_____________
Maric Michaud
_____________
Aristote - www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 426 880 097
More information about the Python-list
mailing list