2012-03-30 5 views
1

Ich bin ziemlich neu zu Python, und ich erstelle eine neue Rechnerklasse. Ich habe meinen Code gestartet:Wie man eine Rechnerklasse erstellt, die eine beliebige Anzahl von Zahlen mit Python akzeptiert

 
class calculator (object): 

    def __init__ (self, *values): 

Aber ich bin hier fest. Ich muss def addieren und def multiplizieren, usw .; aber ich bin mir nicht sicher, wie ich es anfangen soll oder ob ich hier richtig liege. Ich habe mich gefragt, ob ich bei der Verwendung von * Werten richtig bin, da ich eine beliebige Anzahl von Zahlen für die Funktionen akzeptieren muss. Und wenn ja, wie kann ich beenden init? Vielen Dank.

+4

Warum wollen Sie alle Zahlen auf Ihrem Rechner zu übergeben, wenn Sie es initialisieren? Warum würden Sie die Zahlen nicht einfach weitergeben, wenn Sie Operationen aufrufen? – kindall

+0

Sie sollten sich dies anschauen: http://stackoverflow.com/questions/919680/python-can-a-variable-number-of-arguments-be-passed-to-a-function – theonova

+2

Wenn Sie nicht wissen, wo Sie werden wahrscheinlich am Ende woanders landen ;-) Definieren Sie zuerst, wie Sie möchten, dass der Rechner unabhängig von der Implementierung funktioniert, und erst dann beginnen Sie, verschiedene Programmierartefakte auf die gewünschten Funktionen zu mappen. – mjv

Antwort

0

Sie sollten __init__ für die Initialisierung des Rechners verwenden, nicht für seine Berechnungen (dafür sind die Methoden der Klasse geeignet). So zum Beispiel, könnten Sie tun:

 
class Calculator(object): 
    def __init__(self, arg1): 
     self.arg1 = arg1 

    def add(self, a, b): 
     return a + b 

Ich bin mir nicht sicher, welche Art von Variablen, die Sie einen Rechner initialisieren bräuchten aber vielleicht können Sie mit ein paar kommen. Anschließend können Sie tun:

 
calculator = Calculator() 
# the following prints 7 
print calculator.add(3, 4) 
+0

Das war wirklich sehr hilfreich, ich glaube ich habe mich in der Rolle von __init__ geirrt. Danke vielmals! –

0
class Calculator(object): 
    def __init__(self,*vals): 
     self.vals = vals #list of vals here 

    def add(self): 
     return sum(self.vals) 
+0

Dies würde erfordern, dass Sie jedes Mal ein neues Calculator-Objekt instanziieren, wenn eine neue Berechnung durchgeführt werden muss. Das ist nicht sehr nützlich. –