2011-02-03 7 views
0

나는 (반드시!) 파이썬 프로그램에 인스턴스화해야하는 클래스와 다른 두 개의 함수가 있습니다. 반복되는 코드를 방지하기 위해클래스를 파이썬 함수의 인수로 제공하는 방법

def f(id): 
    c = ClassA(id) 
    ... 
    return ... 

def g(id): 
    c = ClassB(id) 
    ... 
    return ...  

, 나는 어떻게 든 매개 변수로 실체화하는 클래스를 받아들이는 하나의 함수를 작성할 수 있도록하고 싶습니다.

def f(id): 
    return f_helper(id, ... ClassA ...) 

def g(id): 
    return f_helper(id, ... ClassB ...) 

def f_helper(id, the_class): 
    c = ... the_class ... (id) 
    ... 
    return ... 

나는이 가능하다 확실 해요,하지만 어떻게 찾을 수 없습니다 ... 당신이 (마이너스 ...들)이 정확히 작동

답변

5

:

>>> class foo: 
    pass 

>>> def make_it(cls): 
    return cls() 

>>> make_it(foo) 
<__main__.foo instance at 0x011D9B48> 

이를 원하는 경우 클래스 생성자에 매개 변수를 가져 오거나 전달하도록 수정할 수 있지만 아이디어는 완벽합니다. 클래스는 파이썬에서 제일 수준의 객체입니다.

4

꽤 많은 점을 얻었 으면 좋았을뿐입니다. 클래스는 일류 클래스의 값이므로 모든 객체에 대해 참조 할 수 있습니다. freturn f_helper(id, ClassA)이고 greturn f_helper(id, ClassB)이됩니다.

2

함수에 호출 가능 함수를 전달할 수 있습니다. 클래스 자체는 호출 가능 객체이며, 리턴 된 객체는 상기 클래스의 인스턴스이다.

def f_helper(id, the_class): 
    c = the_class(id) 
    # ... 
    return # ... 
관련 문제