以下是一个示例:
我想要一个名为Foo的类,它可以像整数(或浮点数)一样使用。因此,我想要做以下几件事情:
第一个语句
因此,要实现整数行为,我必须实现所有模拟整数的方法。我该如何解决这个问题?我尝试从
更新:
如果你想使用
如果您随后调用:
给定以下示例:
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
继承,但这次尝试不成功。更新:
如果你想使用
__init__
,从int
继承会失败。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