繁体   English   中英

从内置类型派生的Python类将无法构造:TypeError:type()最多接受X个参数(给定Y)

[英]Python class derived from built-in type won't construct: TypeError: type() takes at most X arguments (Y given)

Python 2.7,Windows7x64。

编码。 请注意, class ImmedVal派生自内置类型long

class Immediate(object):
    def __init__(self, name, value, loc):
        object.__init__(self)
        self.value = value
        self.loc = loc
        self.name = name

class ImmedVal(long, Immediate):
    def __init__(self, name, value, loc):
        long.__init__(self, value)
        Immediate.__init__(self, name, value, loc)

但是尝试实例化ImmedVal ...

x = ImmedVal('hello', 33, 7)

...不起作用:

TypeError:long()最多接受2个参数(给定3个)

构造上数字/参数类型的所有不同组合均无效。

PS:我正在这样做,因此引用它会返回值,因此可以这样使用它:

eval('x + 1', { 'x' : x })

内置类型是不可变的。 这就改变了游戏,我需要这样的__new__运算符:

class ImmedVal(long, Immediate):
    def __new__(cls, name, value, loc):
        return long.__new__(cls, value)

    def __init__(self, name, value, loc):
        long.__init__(self, value)
        Immediate.__init__(self, name, value, loc)

(基class Immediate__init__从上面保持不变。)

如上所述,现在可以按预期进行施工。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM