2016-10-09 62 views
0

我正在寫一個python類和相關函數。假設以下是具有功能,增加了一個數字列表的所有值,並返回總和如何在Python中隱式傳遞參數Class功能

alist = [2,3,7,4,7] 
MyClasss(object): 
    def __init__(self): 
     print("Roses are red") 
    def add_list(self,thelist): 
     j = 0 
     for i in the list: 
      j = j+i 
    return j 

    a = MyClasss() 
    print("sum is ",a.add_list(alist)) 

上面的查詢將返回列表就好總和的一類。

我的問題是: 是否有可能寫這個查詢或創建中,我們不必通過括號中的數據對象的數據對象,而不是把它寫這樣的事情

alist.add_list() 

,並獲得相同的結果。就像我們看到不同的功能可用於不同的數據類型。 對此的任何見解將不勝感激。由於

+0

不清楚你想要什麼,但爲什麼不做'sum(alist)'? –

+0

@ cricket_007哦,這只是一個解釋的示例方法。我想知道我們是否可以使用我在代碼 – Uasthana

+0

@ cricket_007的第二部分中提到的語法:只是一個想法。你在線24 * 7? :P – FallAndLearn

回答

3

你可以把它添加到__init__建設

class MyClasss(object): 
    def __init__(self, theList): 
     self.theList = theList 
    def add_list(self): 
     return sum(self.theList) 

>>> a = MyClasss([2,3,7,4,7]) 
>>> print("sum is ", a.add_list()) 
23 
>>> print("sum is ", a.add_list()) 
23 

另一種方式做,這是從functools.partial創建部分功能和調用:

>>> import functools as ft 
>>> a = MyClasss() 
>>> a.add_list = ft.partial(a.add_list, [2,3,7,4,7]) 
>>> a.add_list() 
23 
+0

確定這是確定的一種方法。感謝分享它。 – Uasthana