Seite 1 von 1

wieso keine deklarierung

Verfasst: Samstag 8. August 2020, 14:02
von Lou Cyphr3
Hallo,

ich arbeite mich gerade in python ein

ich habe hier ein problem mit einer funktion, die dem interpreter nicht bekannt zu sein scheint, obwohl sie ja eigentlich eine memberfunktion der selben klasse ist.

was ist mein fehler?

Code: Alles auswählen

TAG_PAUSCHALE = 100

class Robot:
    def __init__(self, name, anzahl_n,):
        self.name = name
        self.anzahl_n = anzahl_n

    def rechnungTag(self):
        return TAG_PAUSCHALE % anzahl_n

    def print_gesamt(self):
        gesamt = rechnungTag() * anzahl_n
        print(gesamt)


r1 = Robot("r", 7 )

r1.print_gesamt()
fehler :

Code: Alles auswählen

    gesamt = rechnungTag() * anzahl_n
NameError: name 'rechnungTag' is not defined

Re: wieso keine deklarierung

Verfasst: Samstag 8. August 2020, 14:09
von __deets__
Wenn du Methoden aufrufen willst, gehoert dazu zwingend ein Objekt. Darum ist die Syntax immer "objekt.methode(...)". So wie du das ja auch mit r1.print_gesamt() machst. Und wenn du innerhalb einer Klasse auf das eigene Objekt zugreifen willst, dann geschieht das mit *trommelwirbel* self. Also "self.methode(...)".

Re: wieso keine deklarierung

Verfasst: Samstag 8. August 2020, 14:12
von Lou Cyphr3
ahja. Danke

Re: wieso keine deklarierung

Verfasst: Samstag 8. August 2020, 14:16
von __blackjack__
@Lou Cyphr3: Anmerkunngen zum Quelltext: Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). Also `rechnung_tag()`. Wobei der Name inhaltlich komisch ist, denn Funktions- und Methodennamen werden üblicherweise nach der Tätigkeit benannt die sie durchführen. `rechnung_tag` ist aber keine Tätigkeit. Bei so einer simplen Rechnung wäre das vielleicht auch ein Kandidat für ein `property()`.

Man sollte keine Abkürzungen verwenden. Was soll denn das `n` in `anzahl_n` bedeuten?