我正在尝试实现一个设置类,该类应为我的应用程序保存全局设置。从基类中,我想派生应该包含实际设置值的类,可以是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”是此函数的无效关键字参数

为什么?

最佳答案

您不能将ul作为关键字参数传递给int,因为int不接受这样的参数。您只需要调用int.__init__(self, val)

尚不清楚您打算将该参数用作什么,但是无论它是什么,您都需要在自己的类中处理它,而不是将其传递给int

另外,由于int是不可变的,所以覆盖__init__不能用于更改值。您需要覆盖__new__

10-07 19:11
查看更多