Funktionsparameter mit Vordefiniertem Wert

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
FabianB
User
Beiträge: 6
Registriert: Freitag 26. März 2010, 11:10

Hallo,

ich habe folgendes Problem:
Ich möchte einem Funktionsparameter einen Standard Wert vorgeben. Bei dem Wert soll es sich nun nicht um eine Konstante handeln sondern um ein Attribut des Objekts, welches über den Konstruktor definiert wird!
Mein Versuch sieht folgernder Maßen aus:

Code: Alles auswählen

class meineKlasse:
    
   def __init__(self):
      self.PS = 1
      pass
    
   def meineFkt(self, da=self.PS):
      print da
      
meinObjekt = meineKlasse()
meinObjekt.meineFkt()
Der Interpreter meldet bei dieser Variante einen Fehler ("self" ist nicht definiert!)
Lasse ich das "self" weg bekommt ich einen hnlichen Fehler ("PS" ist nicht definiert!)

Nun habe ich keine Idee wie ich mein Problem umsetzten könnte! Hat mir jemand einen Tipp?
Falls ich hier völlig absurde Sachen machen will, währe ich für Erklärungen sehr dankbar!

Gruß Fabi
Zuletzt geändert von FabianB am Dienstag 5. April 2011, 16:07, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

FabianB hat geschrieben:Hallo,

ich habe folgendes Problem:
Ich habe es gelöst. s.u.

Code: Alles auswählen

# gelöscht
# jetzt hast Du wohl kein Problem mehr...
... :mrgreen:

SCNR

Mal im Ernst: Du musst schon beschreiben, was genau Dein Problem ist! Was soll der Code bewirken, was klappt nicht, gibt es einen Fehler, wenn ja welchen, usw. Steht auch alles in der FAQ :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
FabianB
User
Beiträge: 6
Registriert: Freitag 26. März 2010, 11:10

.... tja der Post war wohl nch nicht fertig und ich habe mich wohl verklickt!!!


Hyperion hat geschrieben:
FabianB hat geschrieben:Hallo,

ich habe folgendes Problem:
Ich habe es gelöst. s.u.

Code: Alles auswählen

# gelöscht
# jetzt hast Du wohl kein Problem mehr...
... :mrgreen:

SCNR

Mal im Ernst: Du musst schon beschreiben, was genau Dein Problem ist! Was soll der Code bewirken, was klappt nicht, gibt es einen Fehler, wenn ja welchen, usw. Steht auch alles in der FAQ :-)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

FabianB hat geschrieben:Ich möchte einem Funktionsparameter einen Standard Wert vorgeben. Bei dem Wert soll es sich nun nicht um eine Konstante handeln sondern um ein Attribut des Objekts, welches über den Konstruktor definiert wird!
Ja das geht nicht, da self.PS schon zur Definition der Methode bekannt sein müsste, also musst du das Attribut später abfragen.

Code: Alles auswählen

class ...
    def function(self, param=None):
        if param is None:
            param = self.attribute
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sorry, das konnte ich ja nicht wissen ;-)

Vielleicht kurz noch eine Anmerkung zur Namensgebung: Klassennamen werden laut PEP8 in "CamelCase" geschrieben, Funktionen idR "klein_und_mit_bindestrichen".
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
FabianB
User
Beiträge: 6
Registriert: Freitag 26. März 2010, 11:10

Danke
Antworten