2012-12-27 88 views
1

我有一個類:Python的類實例算術

class Foo: 
    def __init__(self, a, b): 
     self.a = a 
     self.b = b 

a是一個浮子和b是包含在笛卡爾座標系的位置的元組。

比方說a = Foo(1.23, (1, 2))

我想要做的就是讓它如此做,如果我們做a + 4.567.89 - a或其他什麼,它評估a是一個浮動對象(a.a)。

我知道我可以添加像__add____sub__這樣的內置方法,但有沒有更簡單的方法?如同在一種方法中提供功能的方法一樣?

+2

我不這麼認爲。否則,我們可以做'Foo()'+'Bar()'='Egg()'。 Python是神奇的。有體力勞動工作。 '+'不會被重載,所以它會保留它的標準功能。 – CppLearner

回答

4

如果a應該是一個浮點數,那麼我會建議將它強制轉換爲浮點數。

float(a) + 4.56 
+6

爲了達到這個目的,需要定義'__float__'。但是,明確的轉換是很好的。 – delnan

+0

啊,重讀這個問題後我第一次誤讀了。 –

+1

@SeanLinehan:如果你爲'float'方法添加了定義,讀者會很有用,因爲沒有它,'float(a)'引發一個異常。 – Rodrigue