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