【问题标题】:Is a class or instance in the meta class?元类中是类还是实例?
【发布时间】:2013-02-08 04:39:57
【问题描述】:
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),

clsclass 还是 instance

【问题讨论】:

    标签: python instance metaclass


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多