在Python 3.4中,我想创建一个子类float- 可以在数学和布尔操作中使用,例如a float,但具有其他自定义功能,并且可以在初始化时接收控制该功能的参数.(具体来说,我想要一个自定义__str__和该方法中使用的参数.)
但是,我似乎无法获得float具有功能性双参数构造函数的子类.为什么?这仅仅是扩展内置类型的限制吗?
例:
class Foo(float):
def __init__(self, value, extra):
super().__init__(value)
self.extra = extra
Run Code Online (Sandbox Code Playgroud)
现在如果我尝试Foo(1,2)我得到:
TypeError: float() takes at most 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,我的新__init__论点也被强制执行,所以如果我这样做,Foo(1)我会得到:
TypeError: __init__() missing 1 required positional argument: 'extra'
Run Code Online (Sandbox Code Playgroud)
这是什么交易?我已经用子类型完成了类似的事情,list并且对它没有用处感到惊讶float.