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