第一章 面向对象进阶 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缓存方法结果