wieso keine deklarierung

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
Lou Cyphr3
User
Beiträge: 59
Registriert: Donnerstag 6. Juli 2017, 00:04

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
Cours, camarade, le vieux monde est derrière toi!
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

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(...)".
Lou Cyphr3
User
Beiträge: 59
Registriert: Donnerstag 6. Juli 2017, 00:04

ahja. Danke
Cours, camarade, le vieux monde est derrière toi!
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten