给出了以下示例:
class Foo(object):
def __init__(self, value=0):
self.value=value
def __int__(self):
return self.value
我想要一个类Foo,它充当整数(或浮点数)。所以我想做以下事情:
f=Foo(3)
print int(f)+5 # is working
print f+5 # TypeError: unsupported operand type(s) for +: 'Foo' and 'int'
第一条语句print int(f)+5
有效,因为有两个整数。第二个失败了,因为我必须__add__
用我的班级实现这个操作。
所以要实现整数行为,我必须实现所有整数模拟方法。我怎么能绕过这个。我试图继承自int
,但这次尝试没有成功。
更新
继承int
失败,如果你想使用__init__
:
class Foo(int):
def __init__(self, some_argument=None, value=0):
self.value=value
# do some stuff
def __int__(self):
return int(self.value)
如果您随后致电:
f=Foo(some_argument=3)
你得到:
TypeError: 'some_argument' is an invalid keyword argument for this function
使用 Python 2.5 和 2.6 测试