2016-11-19 20 views
0

私はPythonを学んでいます。クラス名がDog、インスタンス名がFidoMollyの2つのインスタンスがあるとします。 +演算子を__add__でオーバーロードして2番目のインスタンスの属性を変更したいので、Fido+Molly と入力してMolly.touched属性を設定します。あるインスタンスから別のインスタンスの属性へのアクセスは、どのようにPythonにデプロイされていますか?あるインスタンスから別のインスタンスへのインスタンス変数へのアクセス

答えて

3

__add__特別な方法の仕組みに興味があると思います。本質的にはx.__add__(y)として動作し、xyはインスタンスオブジェクトになります。実装の例を参照してくださいhere

y.touched属性を更新するものを返すには、__add__()Dogにオーバーロードする必要があります。例:

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

「戻りません」は冗長です。 – TigerhawkT3

+1

はい、それはPythonに慣れていない人にとっては明白です。私はコメントをします – pylang

関連する問題