小编Shi*_*ura的帖子

Python:float的子类可以在其构造函数中获取额外的参数吗?

在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.

python types subclass built-in python-3.x

11
推荐指数
2
解决办法
2332
查看次数

标签 统计

built-in ×1

python ×1

python-3.x ×1

subclass ×1

types ×1