2012-04-18 4 views
-1

내 기본 코드는 다음과 같습니다파이썬 상속

내 질문은 다음과 같다 이제
class C1(object): 
    def f(self): 
    return 2*self.g() 

    def g(self): 
    return 2 

class C2(C1): 
    def f(self): 
    return 3*self.g() 


class C3(C1): 
    def g(self): 
     return 5 

class C4(C3): 
    def f(self): 
    return 7*self.g() 

obj1 = C1() 
obj2 = C2() 
obj3 = C3() 
obj4 = C4() 

: 나는 다음과 같이 세 가지 할당 문 작성해야합니다 :

  • 호출 목록을 지정을obj2.f()에 대해 변수 obj2_calls
  • 통화 목록obj3.f() t에 지정하십시오. obj1.f() 호출 할 때 변수 obj3_calls
  • O를 예컨대되는 가변 obj4_calls

호출 목록 obj4.f() 대한 호출 목록 할당, C1f 방법 C1g 메소드를 호출하는 호출 . 이것은 형태 ['C1.f', 'C1.g']

내가 꽤 할당 문을 작성하는 적절한 방법을 모르는 나는 필사적으로 그녀의 물건을 내 친구를 도와 할 목록을 요구하는 로 표현 될 수있다.

첫 번째 할당 문을 올바르게 올바르게 작성하는 방법을 보여줄 수 있다면 나머지 부분을 알아낼 수있을 것입니다.

+2

참고로 숙제는 스택 오버플로에서 문제가 없습니다. 아무런 노력도하지 않은 숙제 *가 문제입니다. –

답변

0

중요한 통찰력은 클래스에 대해 메소드가 정의되지 않은 경우 클래스가 상속하는 클래스의 메소드를 사용하도록하는 것입니다.

따라서 'obj2.f()'가 할 일을 물어보십시오.

  • 어떤 클래스가 obj2입니까?입니다. C2입니다.
  • C2에 대해 f 메서드가 정의되어 있습니까? 예, 있습니다. 따라서 C2.f 메서드가 호출됩니다.
  • C2.f 메서드는 self.g을 호출합니다. 즉, C2.g을 찾습니다. 'C2.g'방법이 있습니까? 아니요, 따라서 C2에서 상속하는 클래스로 이동해야합니다. 줄 class C2(C1)은 클래스 C1에서 상속되었음을 알리기 때문에 C1.g 메서드를 호출합니다.

이들은 첫 번째 전화 걸기 목록을 얻는 단계입니다. 나머지는 당신에게 달린 것입니다.

관련 문제