从int派生并在python类中使用关键字参数

时间:2015-08-12 19:59:52

标签: python class python-2.7

我正在尝试实现一个应该为我的应用程序保存全局设置的Setting类。从基类我想要派生应该保存实际设置值的类,可以是int,str等等......这看起来像:

class Setting:
    def __init__(self):
        pass


class SettingInt(Setting, int):
    """
    An int setting.
    """
    def __init__(self, val = 0, **kw):
        int.__init__(self, val, **kw)
        Setting.__init__(self)

但是当SettingInt用作

i = SettingInt(0, ul = 1)

我收到错误:

TypeError:' ul'是此函数的无效关键字参数

为什么?

1 个答案:

答案 0 :(得分:2)

您无法将ul作为关键字参数传递给int,因为int并不接受此类参数。您只需致电int.__init__(self, val)

不清楚你打算使用那个论点是什么,但不管它是什么,你需要在你自己的类中处理它,而不是把它传递给int

此外,由于int是不可变的,因此覆盖__init__将无法用于更改值。您需要覆盖__new__