2017-12-15 11 views
1

私はクラスを作り、そのクラスの中にいくつかのメソッドを作りたいと思います。 1つのメソッドがリストを取得し、それを数値で掛けて、もう1つのメソッドで同じ数を取得し、それをリストで掛けたい。同じクラスの別のメソッドからの呼び出しメソッド:どのパラメータがPythonに求められていますか?

内側の__ rmul __は、同じパラメータ(リストと番号)を使用していますが、逆の順序で__ mul __を呼び出そうとしています。

「名前 'thor'が定義されていません」というエラーメッセージが引き続き表示されるのはなぜですか? __ rmul __メソッドに到達すると、__ mul __メソッドを使用するようにPythonに指示するにはどうすればよいですか?

+0

あなたの方法の前後に '__'を使用しているのはなぜ? –

+0

@AmitTripathiは、演算子のオーバーロードのためのPythonの構文です。 – mypetlion

答えて

2

__rmul__機能には、thorパラメータがありません。lokiパラメータのみがあります。

__mul__を呼び出すようにそのパラメータを使用してみてください:

class Asgard(object): 
    def __init__(self, list=0) 
     self.list = copy.deepcopy(list) 

    def __mul__(self, thor): 
     #multiplying list by integer 

    def __rmul__(self, loki): 
     self.__mul__(loki) #calling the method __mul__ 
関連する問題