python什么是委托?

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

回到顶部