Наследование классов с параметрами по умолчанию - PullRequest
2 голосов
/ 27 января 2010
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 по умолчанию для некоторого значения?

1 Ответ

4 голосов
/ 20 февраля 2011

Поместите параметр по умолчанию в __new__.

class test(int):
    def __new__(cls, x, y=1):
        ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...