Skip to content

第一章 面向对象进阶 v1.0 ​

在基础篇学习了面向对象的基本概念,下面深入学习面向对象的高级特性

第一部分 高级面向对象特性 ​

一、属性描述符 ​

属性描述符是实现了__get__、__set__或__delete__方法的对象

python
class Descriptor:
    def __get__(self, obj, objtype=None):
        return obj._value
    
    def __set__(self, obj, value):
        obj._value = value

二、元类 ​

元类是创建类的类,可以控制类的创建行为

python
class Meta(type):
    def __new__(cls, name, bases, dict):
        return super().__new__(cls, name, bases, dict)

三、描述符协议 ​

描述符协议包括:

  • __get__: 访问属性时调用
  • __set__: 设置属性时调用
  • __delete__: 删除属性时调用

第二部分 设计模式 ​

一、单例模式 ​

确保一个类只有一个实例

python
class Singleton:
    _instance = None
    
    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

二、工厂模式 ​

定义创建对象的接口,让子类决定实例化哪个类

第三部分 性能优化 ​

一、__slots__ ​

使用__slots__限制实例属性,减少内存占用

python
class Point:
    __slots__ = ['x', 'y']
    
    def __init__(self, x, y):
        self.x = x
        self.y = y

二、缓存 ​

使用functools.lru_cache缓存方法结果