假設我有一個 python 類Sum(),它的方法add()可以獲取一個數字串列進行操作,比如說
sum = Sum()
sum.add([5, 8, 2])
我想.add通過“附加”到自身來呼叫每個串列項的方法。我怎樣才能做到這一點?
sum.add(5).add(8).add(2)
為了清楚起見,我已經看到了keras中的兩種實作
model = tf.keras.Sequential([
hub_layer,
tf.keras.layers.Dense(16, activation='relu'),
tf.keras.layers.Dense(1)
])
也可以表示為
model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dense(1))
我想為上述場景實作第二個,我為串列中的每個專案呼叫.add方法n時間
uj5u.com熱心網友回復:
在您的添加函式中,只需回傳物件本身
def add(self, number: int):
# do your stuff
return self
這是有效的,因為下一個 .add 將在前一個 .add 的回傳元素(也就是物件本身)上執行
希望能幫助到你 :)
uj5u.com熱心網友回復:
add您可以在Sum物件上呼叫該方法。讓我們分解線
sum.add(5).add(8)
add(5)應用于Sum物件sum。
add(8)也必須應用于Sum物件,因此也sum.add(5)必須回傳一個Sum物件。
通常,該add方法必須回傳一個Sum物件
uj5u.com熱心網友回復:
為了能夠鏈接方法,您需要該方法回傳物件的實體(又名self)。您可以在此處找到一些附加資訊。
如果你的物件sum有一個方法add,那么你可以寫sum.add(x)。但是,您不能呼叫add任何東西,只能在此類的實體上呼叫它Sum。所以如果你想做sum.add(x).add(y),你需要那sum.add(x)是一個實體Sum,所以該add方法應該回傳一個Sum實體。如果您希望修改物件本身(而不是創建另一個),則需要add回傳self.
uj5u.com熱心網友回復:
您需要讓add()方法回傳一個Sum物件才能發生這種情況。
這是一個最小的例子。(我命名這個類A是因為sum它是一個 Python 函式,最好不要混淆兩者。)
class A:
def __init__(self, n=0):
self.value = n
def __repr__(self):
return str(self.value)
def add(self, a_list):
self.value = sum(a_list)
return self
x = A()
print(x)
x.add([3, 3])
print(x)
x.add([10,10]).add([1,1,1])
print(x)
輸出:
0
6
29
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459068.html
