from time import ctime
import inspect
class MetaC(type):
def __init__(cls,name,bases,attrd):
print isinstance(cls,MetaC)
print inspect.isclass(cls)
super(MetaC,cls).__init__(name,bases,attrd)
print "careated %s" %ctime()
class Foo(object):
__metaclass__=MetaC
def __init__(self):
print "i am here "
我得到这个输出:
True
True
careated Fri Feb 8 12:33:32 2013
MetaC类__init__方法中的参数(cls),
cls 是类还是实例?
请您参考如下方法:
cls 既是类又是实例。类仅仅是元类的一个实例。
>>> class MetaC(type):
... def __init__(cls, name, bases, attrs):
... print 'cls: ', cls
... print 'cls is instance of MetaC: ', isinstance(cls, MetaC)
...
>>> class C(object):
... __metaclass__ = MetaC
...
cls: <class '__main__.C'>
cls is instance of MetaC: True
