【Python基础】Python面向对象 - 2 - 类的高级主题

扩展内置类型

从Python2.2起,所有内置类型现在都能直接创建子类。


钻石继承/菱形继承


slots实例

将字符串属性名称顺序赋值给特殊的__slots__类属性,新式类就有可能限制类的实例将有的合法属性集,又能够优化内存和速度性能。

这个特殊属性一般是在class语句顶层内将字符串名称顺序赋值给变量__slots__而设置:只有__slots__列表内的这些变量名可赋值为实例属性。实例属性名必须在引用前赋值,即使是在__slots__中也是这样。

装饰器

函数装饰器基础

函数装饰器是写成一行,就在定义函数或方法的def语句之前,而且由@符号,后面跟着所谓的元函数组成,也就是管理另一函数的函数。

例如:

class C:
    @staticmethod
    def meth():
        ...


类装饰器和元类

类装饰器类似于函数装饰器,但是,它们在一条class语句的末尾进行,并把一个类名重新绑定到一个可调用对象。

例如:

def decorator(aClass):...

@decorator
class C:...

元类是一种类似的基于类的高级工具,其用途往往与类装饰器有所重合。它们提供了一种可选的模式,会把一个类对象的创建导向到顶级type类的一个子类,在一条class语句的最后:

class Meta(type):
    def __new__(meta, classname,super,classdict):...

class C(metaclass=Meta):...

元类通常重新定义type类的__new__或__init__方法,以实现对一个新的类对象的创建和初始化的控制。直接效果就像类装饰器一样,是定义了在类创建时自动运行的代码。

两种方法都可以用来扩展一个类或返回一个任意的对象来替代它——几乎是拥有无限的,基于类的可能性的一种协议。





你可能感兴趣的:(python)