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

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

Python2.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() takes at most 2 arguments (3 given)

numbers/types 参数的所有不同组合在构建时均无效。

P.S.: 我这样做是为了引用它 returns 的值,所以我可以这样使用它:

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__与上面没有变化。)

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