2013-02-08 4 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 

인수 MetaC 클래스 __init__ 방법 (cls),

clsclass 또는 instance인가?

답변

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