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

4

1 に答える 1

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
于 2013-02-08T04:44:16.050 に答える