2013-04-18 4 views
18

다른 클래스의 묶음에 의해 상속되는 클래스 A가 있습니다. 이들 중 일부는 비슷한 몇 가지 기능을 가지고 있으며, 다른 곳에서 정의 된 기능을 사용하고이를 필요로하는 클래스에서 호출하는 것이 좋을 것입니다. 그러나 이러한 함수는 수퍼 클래스에 정의 된 함수를 호출합니다. 파이썬 - 자체를 외부 함수에 전달하는 것이 맞습니까?

class A(): 
    def imp_func(*args): 
     # called by the child class functions 

Class B(A): 
    def common_func(self): 
     # some stuff 
     self.imp_func(*args) 

그래서 내가 인수로 self object을 내 도우미 기능을 생성하고 난 도우미 함수 내부에서 imp_func를 호출 할 수 있습니다.

def helper_func(obj, some_args): 
    # some common stuff 
    obj.imp_func(*args) 

class B(A): 
    def common_func(self): 
     # unique stuff 
     helper_func(self, some_args) 

이렇게하면 문제가 해결됩니다.

하지만이 작업을 수행해야합니까? 이건 파이썬 적인가?

+3

아무런 문제가 없습니다. 'self'는 인스턴스에 대한 참조 일 뿐이며, private가 아니며 다른 함수로 넘기는 것은 위험합니다. –

+3

왜이 작업을 수행해야합니까? 'B'는'A'에서'imp_func'를 상속받습니다. 문제없이'B.common_func'에서'self.imp_func (* args)'를 호출 할 수 있습니다. –

+0

@FlorianBrucker 단 하나의 함수가 아니라 부모 클래스에서 호출 된 몇 개의 함수와 여러 클래스의 여러 함수에서 몇 번 호출되는 함수가 있습니다. 이것은 매우 부풀린 클래스와 함수로 연결됩니다. 또한 이러한 함수를 작성하는 데 많은 시간이 소요됩니다. 도우미 클래스를 사용하면 시간과 노력을 절약하고 코드를보다 깨끗하게 유지 보수 할 수 있습니다. – elssar

답변

24

아무런 문제가 없습니다. self의 인스턴스는 항상 함수 (및 다른 클래스의 메서드)로 전달됩니다.