2016-11-19 177 views
0

我正在学习python。假设我的类名为Dog,并且有两个名为FidoMolly的实例。我想通过使用__add__重载+运算符来更改二次实例的属性,所以当我输入Fido+Molly 时,将会设置Molly.touched属性。如何从一个实例访问另一个在Python中部署的实例属性?从一个实例访问实例变量到另一个实例

回答

3

我想你对__add__特殊方法的工作原理感兴趣。本质上它可以作为x.__add__(y),其中xy可以是实例对象。看到它的实施例here

您需要重载__add__()中的Dog以返回更新y.touched属性的内容。例如:

class Dog(object): 

    def __init__(self, touched): 
     self.touched = touched 

    def __add__(self, other): 
     other.touched = other.touched + self.touched 
     #return None         # optional, explicit 

fido = Dog(1) 
molly = Dog(2) 

fido + molly 
molly.touched 
# 3 
+1

'return None'是多余的,顺便说一下。 – TigerhawkT3

+1

是的,但对于不熟悉Python的人来说是明确的。我会发表评论 – pylang