由于是下面的例子:
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进行测试