Skip to content

Instantly share code, notes, and snippets.

@geekKeen
Created October 12, 2017 01:59
Show Gist options
  • Save geekKeen/d89a6e8a1d2e0ff4a10870a1528ccbbf to your computer and use it in GitHub Desktop.
Save geekKeen/d89a6e8a1d2e0ff4a10870a1528ccbbf to your computer and use it in GitHub Desktop.
代理模式 属性访问控制
class FileStorage(object):
def __init__(self, stream, **kwargs):
self.stream = stream
def __getattr__(self, name)
return getattr(self.stream, name)
@geekKeen
Copy link
Author

简单的代理模式只需要实现 __getattr__方法, 使调用落到被代理对象上

@geekKeen
Copy link
Author

__getattr____setattr__ 解析:
__getattr__: 当实例属性和类的属性没有找到时调用, 能找就不调用, 方法计算属性或者抛出 AttributeError异常

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment