2012-09-11 89 views
-1

在構建Foo類的實例之前,我想創建一個Foo類中定義的方法的實例方法對象,並將其分配給一個變量。然後我將創建一個Foo類的實例,並通過該變量針對新創建的實例執行實例方法對象。這是可行的嗎?如果是這樣,怎麼樣?謝謝。是否有可能基於關聯類創建一個實例方法對象?

+0

呃?對不起,我真的很難解析你的問題。有什麼方法可以用不同的方式來描述它嗎?也許用一個例子來說明它? –

+0

恭喜,你創造了新紀錄! *四個* *不同*您的問題的解釋導致許多答案!我計算一個classmethod,一個綁定方法別名,一個未綁定方法引用和一個獨立函數。 –

+1

@MartijnPieters - 不完全是4. larsmans和我自己發佈的答案几乎完全相同(並且在大約3秒鐘內發佈)......說到這一點,我想我會刪除我的......(so我想這隻會使* 3不同的解釋* ...不知道這是否使它從記錄斷路器,雖然;) – mgilson

回答

3

我希望我的理解正確,你想是這樣的:

>>> class Foo(object): 
...  def __init__(self, msg): 
...   self.msg = msg 
...  def speak(self): 
...   print(self.msg) 
...  
>>> tell_me = Foo.speak 
>>> tell_me(Foo("hello!")) 
hello! 

是的,這是可能的。 Foo.speak是一個未綁定的方法,它是一個可調用的(函數),可以將實例作爲其第一個參數傳遞,以獲得您從綁定方法(例如Foo("hello").speak)獲得的相同行爲。

+1

+1實際解釋它... – mgilson

+0

@larsmans - 你的回答正是我所看到的。感謝您理解我的問題,並抱歉不讓我的問題更清楚。 – tamakisquare

0

你的意思是這樣的:

class Foo: 
    def __init__(self): 
     self.g = self.f 

    def f(self): 
     print "foo" 

foo = Foo() 
foo.g() 

請糾正我,如果我誤解。

0

在Python中,實例方法只是方便調用並傳遞self作爲第一個參數的函數。你應該可以這樣做:

def bar(self): 
    pass 

class Foo(object): 
    pass 

x = bar 
f = Foo() 
bar(f) 
相關問題