죄송합니다, 이것은 바보 같은 질문 일지 모르지만 그게 나에게 매우 혼란 스럽습니다. 나는 아이의 부모 방법에 접근하고그랜드 자식 클래스의 조부모 메서드를 호출
class A():
def say(self):
print("A")
class B(A):
def say(self):
print("B")
class C(B):
def say(self,*args, **kwargs):
return super(C, self).say(*args, **kwargs)
, 그것은 B
인쇄,하지만 난 우리가 클래스 B
액세스를 받고 같은 클래스 A
에서 방법에 액세스하려면 : 이제 우리는 다음과 같은 클래스가 있다고 가정하자.
클래스 B에 super
을 추가 할 수 있지만, 클래스 B
을 수정하고 싶지 않습니다. 그래서 A
에서 직접 C
클래스의 메소드를 얻는 옵션이 있습니까?
>>> a = A()
>>> a.say()
A
>>> b = B()
>>> b.say()
B
>>> c = C()
>>> c.say()
A
B
C
참고 :
다음class A():
def say(self):
print("A")
class B(A):
def say(self):
print("B")
class C(B):
def say(self):
A.say(self)
B.say(self)
print("C")
터미널에서 그것을 테스트하려면 : A
및 B
클래스 didn를 때문에이 args
및 kwargs
하락이 같은 A.say(self)
를 호출 할 수
A.say()에 의해 클래스 A라고하는 방법을 직접 호출 할 수 있습니다.) 메서드를 호출합니다. –
@PeterMajko 당신은 A의 인스턴스가 필요합니다. Sanjay - 왜 그런 짓을하고 싶니? 한편으로는 상속을 사용하고 있고 다른 한편으로는 그것을 해체하려고합니다. 당신이 성취하기를 원하는 것이지, * 어떻게 *하려는 것이지 더 잘 게시하십시오. 목표를 달성하는 더 좋은 방법이있을 수 있습니다. – alfasin
클래스 C에서 say() 메소드는'super (B, self), say()'에 의해 A에 접근 할 수 있습니다. –