Skip to main content
 首页 » 编程设计

python之元类中是类还是实例

2025年05月04日12sxdcgaq8080

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