是下面的例子: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