__new__ 用于生成类本身
__call__用于生成类的实例
class Meta(type):
def __new__(cls, name, bases, newattrs):
print "new: %r %r %r %r" % (cls, name, bases, newattrs,)
return super(Meta, cls).__new__(cls, name, bases, newattrs)
def __call__(self, *args, **kw):
print "call: %r %r %r" % (self, args, kw)
#return None
return super(Meta, self).__call__(*args, **kw)
def __init__(cls, name, bases, dict):
super(Meta, cls).__init__(name, bases, dict)
cls._instance = None
print 'TTTTTTTTTTTTTTTTTTT'
class Foo:
__metaclass__ = Meta
def __init__(self, *args, **kw):
print "init: %r %r %r" % (self, args, kw)
f = Foo('bar')
print "main: %r" % f