먼저 다음은 파이썬의 새로운 스타일의 프로그램에서이
class c(object):
pass
때문에 슈퍼 기능 지원과 같은 개체로 기본 클래스를 사용해야합니다.
이제 기본 클래스의 기본 클래스의 함수에 액세스하는 방법이 있습니다. 귀하의 경우 A.에서 클래스 C의 my_method 함수를 호출하는 방법
정적 및 동적 두 가지 방법으로이 작업을 수행 할 수 있습니다. 내가 0 번째 인덱스를했다 왜
동적으로 여기
class C(object):
def my_method(self):
print "in function c"
class B(C):
def my_method(self):
print "in function b"
class A(B):
def my_method(self):
# Call my_method from B
super(A, self).my_method()
# This is how you can call my_method from C here ?
super((self.__class__.__bases__)[0], self).my_method()
obj_a = A()
obj_a.my_method()
(self.__class__.__bases__
)는 튜플 형 이잖아에서의 기본 클래스를 반환합니다. 따라서 B 클래스를 반환하므로 B 클래스를 인수로 사용하여 b 클래스의 기본 클래스 인 my_method 함수를 반환합니다.
는 정적
class C(object):
def my_method(self):
print "in function c"
class B(C):
def my_method(self):
print "in function b"
class A(B):
def my_method(self):
# Call my_method from B
super(A, self).my_method()
# This is how you can call my_method from C here ?
obj_a = A()
super(A,obj_a).my_method() # calls function of class B
super(B,obj_a).my_method() # calls function of class A
당신은'SomeClass'의 부모 클래스를 의미? – Dschoni
[XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)와 비슷합니다. 일반적으로 특정 조상에 액세스 할 필요는 없으며 액세스 할 수있는 사람을 '슈퍼'로 지정하면 [MRO] (메소드 확인 순서)에 대한 전체적인 내용이됩니다. (https://www.python.org/download /releases/2.3/mro/). – MSeifert
'A()'로 생성 된 객체는 하나뿐입니다. 이 객체는 모든 수퍼 클래스의 인스턴스이지만 부모 클래스에 대해 만들어진 개별 객체 세트는 없습니다. – kazemakase