python什么是委托?
委托是一种面向对象的技巧(也称为设计模式)。 假设您有一个对象 x
并且想要改变其中一个方法的行为。 您可以创建一个新类,它提供您感兴趣的方法的新实现,并将所有其他方法委托给 x
的相应方法。
Python程序员可以轻松实现委托。 例如,以下类实现了一个类,该类的行为类似于文件,但将所有写入的数据转换为大写:
classUpperOut:def__init__(self,outfile):
self._outfile=outfile
defwrite(self,s):
self._outfile.write(s.upper())
def__getattr__(self,name):
returngetattr(self._outfile,name)
在这里 UpperOut
类重新定义了 write()
方法在调用下层的 self.__outfile.write()
方法之前将参数字符串转换为大写形式。 所有其他方法都被委托给下层的 self.__outfile
对象。 委托是通过 __getattr__
方法来完成的;请参阅 语言参考 了解有关控制属性访问的更多信息。
请注意对于更一般的情况来说,委托可能包含更多细节问题。 当某些属性既需要读取又需要设置时,类还必须定义 __setattr__()
方法,并且这样做必须小心谨慎。 __setattr__()
的基本实现大致相当于以下代码:
classX:...
def__setattr__(self,name,value):
self.__dict__[name]=value
...
大多数 __setattr__()
实现必须修改 self.__dict__
来为自身保存局部状态而又不至于造成无限递归。
以上是 python什么是委托? 的全部内容, 来源链接: utcz.com/z/520662.html