def f(obj):
print('attr =', obj.attr)
class Foo:
attr = 100
attr_val = f
x = Foo()
print(x.attr)
x.attr_val()
輸出:
100
attr = 100
我從真正的 python 獲得了這段代碼,但我不明白如何x傳遞給 function f。
誰能給我解釋一下,謝謝。
uj5u.com熱心網友回復:
x是一個類物件,當你這樣做時x.attr_val()它會自動獲取它自己并將它作為函式的第一個引數提供(通常像這樣的引數被命名self)。
uj5u.com熱心網友回復:
在 python 檔案中:
任何作為類屬性的函式物件都為該類的實體定義了一個方法。
https://docs.python.org/3/tutorial/classes.html#random-remarks
也就是說,當您呼叫類屬性attr_val(它是f; 注意attr_val不是實體屬性)時,它旨在提供實體(而不是類)。x
uj5u.com熱心網友回復:
attr_val就是所謂的實體方法。當你的Foo類呼叫它時,它會自動將物件作為第一個引數傳遞,有效地運行:f(x)
如果您使用的是自定義__init__方法,標準做法是傳遞self變數以指示此自參考。
因此,更詳細的變體將是:
def f(obj):
print('attr =', obj.attr)
class Foo:
def __init__(self):
self.attr = 100
def attr_val(self):
f(self) # or "return f(self)"
x = Foo()
x.attr_val()
# attr = 100
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/474868.html
