[英]Python — TypeError: format() takes at most 2 arguments (3 given)
[英]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.