classA(object): __metaclass__ = Sip # class A 是通过元类产生的新的类
元类定义的都是类的方法,(父类主要定义类的行为)
第一个参数不是self,而是cls
不可继承的类
1 2 3 4 5
classfinal(type): def__init__(cls,name,bases,namespaces): super(final, cls).__init__(name, bases, atts) for klass in bases: assertnot isinstance(klass, final)
__metaclass__ = type
__new__
对于直接分配空间类的继承,比如int, str, tuple得用new代替init
单例模式 hasattr(cls,’instance’)
抽象方法
不一定需要实例化抽象方法
1 2 3
classfather(object): defMymethod(self): raise NotImplementedError('... not realize')