簡體   English   中英

定義方法的參數數目未知,不等於None

[英]Define Method with unknown number of arguments not equal to None

我正在使用Python 3.7。

假設我具有這兩個函數,並且無法更改它們的代碼(即設置默認參數,例如x=None )。

def f1(x):
    return x

def f2(x,y):
    return x+y

假設我有一堂這樣的課。

class test():
    def __init__(self, var1, var2 = None, func):
        self.var1 = var1
        self.var2 = var2
        self.func = func

    def apply_func(self):
        return self.func(self.var1, self.var2)

如何構造類test的定義,以使self.var2僅在var2 is not None時通過? 這樣,如果我使用屬性fun1實例化並調用方法apply_func ,就不會出現參數錯誤(參數過多)的apply_func 而且,我不想為每種函數類型創建兩個不同的類,而只apply_func方法函數apply_func

您可以根據函數對象的__code__.argcount屬性對參數列表進行切片,該屬性存儲函數期望的參數數量:

def f1(x):
    return x

def f2(x,y):
    return x+y

class test():
    def __init__(self, func, var1, var2 = None):
        self.var1 = var1
        self.var2 = var2
        self.func = func

    def apply_func(self):
        return self.func(*(self.var1, self.var2)[:self.func.__code__.co_argcount])

以便:

print(test(f1, 1).apply_func())
print(test(f2, 1, 2).apply_func())

輸出:

1
3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM