2016-10-09 2 views
0

Ich schrieb eine Python-Klasse und verwandte Funktionen. Nehmen wir folgende ist eine Klasse mit einer Funktion, die alle Werte einer numerischen Liste summiert sich und gibt die SummeWie übergeben Argument implizit in Python-Klasse-Funktion

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)) 

Die obige Abfrage wird die Summe aus der Liste ganz gut zurück.

meine Frage ist: Ist es möglich, diese Abfrage schreiben oder ein Datenobjekt erstellen, in dem wir das Datenobjekt in den Klammern passieren müssen stattdessen schreiben Sie es nicht so etwas wie diese

alist.add_list() 

und erhält die gleiche Ergebnisse. Wie wir sehen, sind verschiedene Funktionen für verschiedene Datentypen verfügbar. Alle Einsichten dazu werden sehr geschätzt. Dank

+0

Unklar, was Sie wollen, aber warum nicht do 'sum (alist)'? –

+0

@ cricket_007 Oh, das ist nur eine Beispielmethode zur Erklärung. Ich wollte wissen, können wir die Syntax verwenden, die ich im zweiten Abschnitt des Codes erwähnt – Uasthana

+0

@ cricket_007: Nur ein Gedanke. Sie bleiben online 24 * 7? : P – FallAndLearn

Antwort

3

Sie können es zu __init__ auf dem Bau hinzufügen

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 

Einen anderen Weg, dies zu tun, ist eine Teilfunktion von functools.partial erstellen und nennt das:

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

ok das ist definitiv eine Möglichkeit, es zu tun. Danke, dass du es geteilt hast. – Uasthana

Verwandte Themen