2012-04-16 15 views

답변

19

dummy.func1unbound이다, 따라서 단순히 명시 적 self 인수를 취합니다

def greet(f,name): 
    d = dummy() 
    f(d, name) 

greet(dummy.func1,'Bala') 
+1

감사합니다. btw, 언 바운드 메서드는 무엇입니까? – balki

+1

개체가 연결되어 있지 않은 메서드입니다. 자세한 내용은 [this stackoverflow question] (http://stackoverflow.com/questions/114214/class-method-differences-in-python-bound-unbound-and-static)을 참조하십시오. – phihag

1

당신은 같은 것을 사용할 수 있습니다

class dummy: 
    def func1(self,name): 
     print 'hello %s' % name 
    def func2(self,name): 
     print 'hi %s' % name 
def greet(name): 
    d = dummy() 
    d.func1(name) 
greet('Bala') 

및 이 작품 피 rfectly : on codepad

+1

예, 작동하지만 현재 상태입니다. 멤버 함수를 인수로 전달하는 것입니다. 즉 greet (dummy.func2, 'Bala')도 작동해야합니다. – balki

5

dummy은 클래스 이름이므로 dummy.fun1은 언 바운드입니다. 또한 functools.partial를 사용할 수

def greet(f,name): 
    f(name) 

my_dummy = dummy() 

greet(my_dummy.func, 'Bala') 

: dummy 외부 greet 당신은 인스턴스화 할 수 있습니다, 또는

def greet(f,name): 
    d = dummy() 
    f(d, name) 

greet(dummy.func1, 'Bala') 

: phihag 말했듯이

, 당신은 방법을 결합하는 dummy의 인스턴스를 사용

from functools import partial 

def greet(f,name): 
    f(name) 

my_dummy = dummy() 

greet(partial(dummy.func1, my_dummy), 'Bala') 
관련 문제