是下面的例子:Python类具有给定整数仿真
class Foo(object):
def __init__(self, value=0):
self.value=value
def __int__(self):
return self.value
我希望有一类富,其作为一个整数(或浮动)。所以,我想要做以下的事情:
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)
你:
测试与Python 2.5和2.6
我不明白你的问题。你怎么能绕过你必须做的一件事,以便不做你必须做的一件事? Fishslap! – 2009-10-28 16:05:55
我想要一个类似整数的类。真正的整数实现总是相同的,所以为什么每次使用它都要实现它。当你使用'+' - 运算符时,__add__方法是有意义的。 – 2009-10-28 16:11:51