在構建Foo類的實例之前,我想創建一個Foo類中定義的方法的實例方法對象,並將其分配給一個變量。然後我將創建一個Foo類的實例,並通過該變量針對新創建的實例執行實例方法對象。這是可行的嗎?如果是這樣,怎麼樣?謝謝。是否有可能基於關聯類創建一個實例方法對象?
-1
A
回答
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)
相關問題
- 1. 方法基於一個請求對象來創建一個模型實例
- 2. 是否可以創建一個可用於創建任何類的「新」實例的泛型方法或類?
- 3. 如何基於此對象數據創建實例方法?
- 4. 如何創建一個基於實例方法的值對對象進行排序的類/作用域方法?
- 5. 可能從另一個對象方法實例化對象(javascript)
- 6. 關於創建一個類的對象
- 7. 是否有方法可以方便地記住類的實例,類,對象
- 8. 如何從其基類的實例創建一個新對象?
- 9. OOP - 如果一個類創建一個類的實例,該實例是否也成爲一個對象?
- 10. 創建一個同時是實例和類方法的方法
- 11. 是否有可能從JSON創建一個Parse對象
- 12. 是否有可能在類本身中創建一個實例爲null?
- 13. 是否有可能通過多個對象實例同時訪問一個類的靜態方法?
- 14. 是否有可能在C#中創建一個沒有類的對象?
- 15. JavaScript:基於現有類創建新對象(添加方法)
- 16. 在創建動態實例時的ecore中,是否可以創建基類的多個對象?
- 17. 驗證對象是否有一個或多個關聯對象
- 18. 是否有一個call_user_func()等同於創建一個新的類實例?
- 19. 如何基於對象名稱創建javascript對象的實例
- 20. 是否有可能在pyserial中創建serial.Serial()的多個實例?
- 21. 是否有可能有一個「本地」類型實例?
- 22. 類,實例/對象方法
- 23. Node.js對象實例是否爲每個用戶創建一個對象?
- 24. 是否有可能在java中創建Enum類型的對象?
- 25. 是否有可能從工廠創建單例實例
- 26. ExecutorService - 在方法中創建新實例vs每個類創建一個實例
- 27. 基於現有實例創建類的新實例
- 28. 兩個類創建對方的實例
- 29. 無法實例化對象:只創建第一個對象
- 30. 是否有可能使用反射修改對象實例的方法
呃?對不起,我真的很難解析你的問題。有什麼方法可以用不同的方式來描述它嗎?也許用一個例子來說明它? –
恭喜,你創造了新紀錄! *四個* *不同*您的問題的解釋導致許多答案!我計算一個classmethod,一個綁定方法別名,一個未綁定方法引用和一個獨立函數。 –
@MartijnPieters - 不完全是4. larsmans和我自己發佈的答案几乎完全相同(並且在大約3秒鐘內發佈)......說到這一點,我想我會刪除我的......(so我想這隻會使* 3不同的解釋* ...不知道這是否使它從記錄斷路器,雖然;) – mgilson