2010-01-27 138 views
2
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. 

我知道你可以用普通函數做到這一點,但它只是一個例子。然而,我需要從一個類繼承,我不喜歡使用*參數(除非你能說服我喜歡他們..)。那麼我怎麼能讓y默認爲某個值呢?具有默認參數的類繼承

+0

您的意思是'def __new __(cls,x,y = 1):'? – kennytm 2010-01-27 05:57:35

+0

這就是我的意思^ __ ^!我不敢相信我沒有想到這麼做......謝謝。 – what 2010-01-27 18:26:16

+0

@KennyTM:你能否做出答案? – 2011-02-19 22:44:21

回答

4

將默認參數放在__new__上。

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