考慮下面的類:
class Test():
def __init__(self, data, transformation = None):
self.data = data
self.transformation = transformation
def my_method(self):
if self.transformation:
data = self.transformation(self.data)
return data
這個類獲取一個資料和一個函式作為它的引數,它將對資料執行一些轉換。現在,在課堂之外,我創建了一個函式來執行我想要的轉換。但是,我定義的函式除了資料本身之外還有幾個引數。在下面的代碼中創建物件時,如何將這些額外的引數傳遞給類?
instance = Test(data, my_func)
uj5u.com熱心網友回復:
您可以部分應用引數:
import functools
def my_func(a, b, c):
return a * b c
class Test():
def __init__(self, data, transformation = None):
self.data = data
self.transformation = transformation
def my_method(self):
if self.transformation:
data = self.transformation(self.data)
return data
instance = Test(2, functools.partial(my_func, 3, 4))
print(instance.my_method()) # prints 14 (3 * 4 2)
functools.partial是標準庫中的一個高階函式,它接受一個函式,它的一些引數,并回傳一個新函式,該函式接受其余部分,然后呼叫原始函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/465616.html
