1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import inspect
def test(name):
caller = inspect.stack()[1][0]
print caller.f_locals.keys()
def advisor(name,bases,d):
print "in advisor !"
return type(name,bases,d)
caller.f_locals["__defaultMetaclass__"] = caller.f_locals["__metaclass__"]
caller.f_locals["__metaclass__"] = advisor
class Meta(type):
def __new__(cls,name,bases,d):
print "in __new__"
return type.__new__(cls,name,bases,d)
class Item(object):
__metaclass__ = Meta
test("toto")
def __init__(self):
object.__init__(self) |