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
关于python - 元类中是类还是实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765780/