2013-02-08 36 views
2
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 

的參數(cls)在MetaC__init__方法,

cls一個classinstance

回答

1

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 
相關問題