Python 面向对象编程高级技巧深度解析
1. 属性访问委托
1.1 基本原理
属性访问委托是一种强大的技术,它允许一个对象将对某些属性的访问请求转发给另一个对象。在 Python 中, __getattr__ 方法是实现这一技术的关键。它是一个“通用陷阱”,当程序试图访问一个不存在的属性时,该方法会被调用。
def __getattr__(self, name):
return getattr(self._a, name)
在上述代码中,如果在类 B 中访问一个未定义的方法, __getattr__ 会将该访问请求委托给类 A 。例如:
b = B()
b.bar() # 调用 B.bar()(B 中存在该方法)
b.spam(42) # 调用 B.__getattr__('spam') 并委托给 A.spam
1.2 代理类的实现
代理类是属性访问委托的一个典型应用。以下是一个简单的代理类示例:
class Proxy:
def __init__(self, obj):
self._obj = obj
def __getattr__(self, name):
pri
Python面向对象编程高级技巧解析
超级会员免费看
订阅专栏 解锁全文
1148

被折叠的 条评论
为什么被折叠?



