2017-12-15 4 views
1

클래스를 만들고 그 클래스 안에 여러 메서드를 만들고 싶습니다. 한 가지 방법으로 목록을 가져 와서 숫자로 곱하고 다른 방법을 사용하면 같은 수를 가져 와서 목록으로 곱하면됩니다.같은 클래스에있는 다른 메소드의 메소드 호출 : 파이썬이 요구하는 매개 변수는 무엇입니까?

동일한 매개 변수 (목록 및 번호)를 사용하지만 역순으로 사용하기 때문에 __ rmul __ 내부에서 __ 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__(thor) #calling the method __mul__ 

"이름 'thor'이 정의되지 않았습니다. '라는 오류 메시지가 계속 표시되는 이유는 무엇입니까? __ rmul __ 메소드에 도달하면 파이썬에게 __ mul __ 메소드를 사용하도록 지시하려면 어떻게해야합니까?

+0

당신이 전에 당신의 방법 후 __''사용하는 이유는 무엇입니까? –

+0

@AmitTripathi는 연산자 오버로딩을위한 파이썬의 구문입니다. – 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__ 
관련 문제