2010-07-08 85 views
-1

在這種情況下,我將如何獲取返回值。 (因爲我會功能)從類中獲取返回值

class A(object): 
    def __init__(self,a,b): 
     self.a = a 
     self.b = b 
     self.run() 
    def run(self): 
     return a + b 

當我這樣做,我得到一個實例,我將如何得到一個返回值?

感謝 詹姆斯

+0

如果您提到您正在嘗試解決的潛在問題,您將得到更好的答案。換句話說,使用這個的代碼是什麼? – detly 2010-07-08 04:30:43

回答

4

你試圖做一些事情,如:

class A(object): 
    def __init__(self,a,b): 
     self.a = a 
     self.b = b 
    def __call__(self): 
     return self.a + self.b 

a = A(3, 4) 
a() # returns 7 

目前尚不清楚你想要什麼,爲什麼。 __init__修改自我對象,但要求返回None(即不返回)。其他任何情況都會導致TypeError

編輯:爲了避免創建一個實例,可以覆蓋__new__

class A(object): 
    def __new__(self,a,b): 
     return A.run(a, b); 
    @staticmethod 
    def run(a, b): 
     return a + b 

你仍然還沒有完全解釋爲什麼你需要這個。

+0

是的我正在嘗試做你的代碼正在做什麼,但我不想要一個實例。 – James 2010-07-08 01:01:12

+6

如果你想要一個返回值而不是一個實例,你爲什麼要使用一個類而不是一個函數? – 2010-07-08 01:15:11

1

調用類型的主要目的是創建(和返回),該類型的實例 - 儘管你可能做手腳與__new__解決的是,爲什麼,在身邊的一切事項的名稱,將你想要來編碼一種類型,它本質上不可能通過常規手段實例化?!看起來你有一些「聰明」的想法,但是,請記住,「聰明」是而不是在Python社區中是一種恭維...而是Python約爲簡單。只需使用一個函數(或任何其他可調用函數,例如帶有__call__方法的類的實例,以獲得高級但仍十分合理的用例)!

+0

沒有太花哨。我想要的只是一個類功能,就像功能一樣(可以用作功能),如果需要,可以調用或使用除主功能之外的一些方法。 – James 2010-07-08 19:52:50

+0

@ user386:沒有一個實例,你所調用的「某些方法」只是帶有一些額外複雜功能的函數,但對於完全正常的,誠實的常規函數​​沒有任何真正的好處。只需使用功能,讓您的生活變得更簡單! – 2010-07-08 20:10:50