Making Classes Subclassable

Ian Kelly ian.g.kelly at gmail.com
Tue Jul 5 10:41:44 EDT 2016


On Tue, Jul 5, 2016 at 2:31 AM, Steven D'Aprano
<steve+comp.lang.python at pearwood.info> wrote:
> On Monday 04 July 2016 18:34, Lawrence D’Oliveiro wrote:
>
>> On Monday, July 4, 2016 at 7:58:07 PM UTC+12, dieter wrote:
>>> --> "type(obj)" or "obj.__class__" (there are small differences)
>>> give you the type/class of "obj".
>>
>> When would it not be the same?
>
>
> class X(object):
>     def __getattribute__(self, name):
>         if __name__ == '__class__':
>             return int
>         return super().__getattribute__(name)

Did you actually test that?

py> class X(object):
...     def __getattribute__(self, name):
...         if __name__ == '__class__':
...             return int
...         return super().__getattribute__(name)
...
py> x = X()
py> x.__class__
<class '__main__.X'>

Certain attributes like __class__ and __dict__ are special.



More information about the Python-list mailing list