2016-10-18 1 views
-1

혼란을 방지하기 위해 원래 질문을 수정합니다. Python - 클래스 메서드를 다른 클래스에 대한 인수의 기본값으로 지정 초기화

class Heuristic: 
    def process(self,data,x,y): 
     processed_data = (data + x) /y 
     return processed_data 

class GTS(Abstract_Strat): 
    def __init__(self, data, method= Heuristic().process(),*args): 
     self.data= data 
     self.method = method 
     self.func_args = args 

그래서 클래스 GTS에, 초기화 함수에서, 내가 다른 모듈에있는 클래스 휴리스틱에 속하는 방법을 전달하는 데 노력하고 있어요 : 나는이 개 다른 모듈에 정의 된 2 종류가 있습니다. I에 유래를 검색하고 Typerror_init_ 방법이라 비슷한 질문을 발견

TypeError: process() takes exactly 3 arguments (1 given) 

이 시도에, 나는 다음과 같은 오류가 발생합니다. 그러나이 경우 오류는 _init_ 메서드에 대한 인수로 전달 된 함수에 대한 오류입니다. 그래서 질문은 - 어떤 클래스의 메소드를 기본 인수 값으로 다른 클래스의 초기화 메소드에 전달하는 올바른 방법은 무엇입니까?

+1

'Heuristic(). process()'. – Li357

+0

고마워, 그게 도움이되었지만 지금은 : TypeError : __init __() 정확히 2 인수 (주어진 1) – dayum

+0

당신은'휴리스틱'의 이니셜 라이저에'data' 인수가 있습니다. 'Heuristic (data_here) .process()' – Li357

답변

0

위의 수정 된 질문에서 언급 한 문제는 function 매개 변수의 기본값으로 전달할 때 Heuristic().process()Heuristic().process으로 변경하여 해결했습니다.

원래 버전의 질문에 대한 Andrew의 의견에 감사드립니다.

1

파이썬에서는 객체에 액세스 할 수있게되기 전에 클래스의 인스턴스를 생성 한 다음 나중에 메소드에 액세스해야합니다.

당신이 좋아하는 일을 할 수 있습니다

class GTS(Abstract_Strat): 
    heuristic = Heuristic(data) 
    def __init__(self, data, method= heuristic.process(),*args): 
     self.data= data 
     self.method = method 
     self.func_args = args 

이것 개체를 구성하고이 "바인딩"방법에 대한 액세스를 제공

. 참조하는 첫 번째 매개 변수는 클래스의 인스턴스가 초기화 될 때까지 액세스 권한이없는 정의의 "self"입니다.

+0

'휴리스틱'이니셜 라이저에 인수가 있습니다 ... – Li357

+0

편집 된 질문보기 – dayum