2016-11-01 3 views
0

나는 this article을 읽습니다. 이 문서에서 광고 메시지 : 클래스 C 용Python 클래스의 세 가지 다른 메소드 호출

, C의 X 인스턴스와 C의 방법 m 다음 세 메소드 호출은 동일하다 :

형 (X)하는 .m (X , ...)

CM (X, ...)

XM (...)이

는이 같은 프로그램에이 문을 변환하려고 :

class C: 
    def __init__(self,a,c): 
     self.a=a 
     self.b=c 

    def m(self): 
     d=self.a+self.b 

x=C(1,2) 
x.m() 
print(type(x).m(x)) 
print(C.m(x)) 
print(x.m()) 

그러나이 세 가지 방법의 의미와 작동 방식에 대한 단서가 없습니다. 내 프로그램이 잘못된 방법을 사용하고 있다면 수정하십시오.

편집

이 코드에 대한 수정을 요구하고 있지 않다, 나는 그 세 가지 방법을 사용하고 각 메소드 호출 한 예를 제공하는 방법을 요구하고있다.

나에게 도움이 될 수있는 각각의 세 가지 방법에 대한 적절한 예를 제공 할 수 있다면.

+1

시도하고 인쇄하려고하는 경우'm'이 (를) 반환하도록 할 수 있습니다. –

+0

어떤 버전의 파이썬에 대해 묻고 있습니까? –

답변

0

귀하의 m은 아무것도 반환하지 않습니다. 파이썬 2.7을 사용하여, 당신은 방법 m을 알고 type(x)과 올바른 유형을 얻기 위해 object에서 C을 도출해야하는 경우

당신은 당신의 C 클래스

1

def m(self): 
    return self.a + self.b 

대부분의 경우

를 원한다.

class C(object): 
    def __init__(self,a,c): 
     self.a=a 
     self.b=c 

    def m(self): 
     return self.a+self.b 

x=C(1,2) 
x.m() 
print(type(x).m(x)) 
print(C.m(x)) 
print(x.m()) 

저는 파이썬 3에서 이것은 암시 적이라고 생각합니다. 그리고 네, d를 계산하는 대신 결과를 반환합니다. 그래서 당신은 무언가를 보게됩니다. 당신의 설명에 대한

편집 : 메소드를 호출하는

세 가지 방법이 그림에 대해 표시됩니다. 가능한 경우 x.m()을 사용하지 않은 이유가 없습니다. 그러나 파이썬에서는 그 단축키가 다음과 같습니다. x 인스턴스의 x 유형의 m 메소드를 호출하십시오. type(x).m(x)은 진행중인 작업을 기록하는 가장 일반적인 방법입니다. 이제 type(x)C (파이썬 3 또는 새로운 스타일의 클래스 - 적어도 object에서 파생 됨 - 적어도 그 밖의 인스턴스)이므로 첫 번째 및 두 번째 작성 방법은 동일합니다.

+0

필자는 그가'print' 호출로 판단하여 파이썬 3에 있다고 생각합니다. 어느 쪽이든, 그의 태그는 혼란 스럽다. 그래서 그가 Scotts의 코멘트에 대답하는 것을 보자. –

관련 문제