一千萬個為什麽

搜索

具有默認值的參數的類繼承

class test(int):
    def __init__(self, x, y=1):#y defaults to 1
        self.x=x
        self.y=y
    def __new__(cls, x, y):
        return int.__new__(cls, x+y)

test(2,3)#Is equal to 5
test(2)#Should equal 3 but __new__ (and other defs) ignore y=1.

我知道你可以用正常的功能做到這一點,但這只是一個例子。但是,我需要繼承一個類,我不喜歡使用* args(除非你能說服我喜歡它們)。那麽如何讓y默認為某個值呢?

最佳答案

將默認參數放在 __ new __ 上。

class test(int):
    def __new__(cls, x, y=1):
        ....

轉載註明原文: 具有默認值的參數的類繼承