从内置类型派生的 Python 类不会构造:TypeError:type() 最多需要 X 个参数(给定 Y)



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)

。不工作:

类型错误: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__与上面相同。

如上所述,施工现在按预期工作。

最新更新