我正在尝试实现一个应该为我的应用程序保存全局设置的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'是此函数的无效关键字参数
为什么?
答案 0 :(得分:2)
您无法将ul
作为关键字参数传递给int
,因为int
并不接受此类参数。您只需致电int.__init__(self, val)
。
不清楚你打算使用那个论点是什么,但不管它是什么,你需要在你自己的类中处理它,而不是把它传递给int
。
此外,由于int
是不可变的,因此覆盖__init__
将无法用于更改值。您需要覆盖__new__
。