Metaclass discussons
Pedro Werneck
pedro.werneck at bol.com.br
Sun Aug 24 09:12:10 EDT 2003
On 24 Aug 2003 04:46:26 -0700
mis6 at pitt.edu (Michele Simionato) wrote:
> Much less hackish, but a bit non-trivial. Your idea is perfect for
> easy hacks in the debugging phase (i.e. add a metaclass generating
> logging capabilities or other more general debugging utilities). You
> can spell it even as
>
> class object(object):
> class __metaclass__(type):
> pass
>
> # rest of the code
Humm... but it does't propagate to imported modules
# mod.py
class Klass(object): pass
# end
---
>>> class object(object):
... class __metaclass__(type): pass
...
>>> import mod
>>> mod.Klass.__bases__
(<type 'object'>,)
>>> class A(object): pass
...
>>> A.__bases__
(<class '__main__.object'>,)
--
But assigning it to __builtin__.object do:
>>> class metaclass(type): pass
...
>>> import __builtin__
>>> __builtin__.object = metaclass("object", (), {})
>>> import mod
>>> mod.Klass.__bases__
(<class '__main__.object'>,)
>>> class A(object): pass
...
>>> A.__bases__
(<class '__main__.object'>,)
>>>
Rgds
Pedro
More information about the Python-list
mailing list