funktionsaufruf funktionirt in schleife nicht

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
sauterle
User
Beiträge: 81
Registriert: Mittwoch 27. Juli 2022, 21:33

Hallo ich bin völlig verzweifelt und bitte dringlichst um hilfe. es ist nur ein beispiel und es ist weder schön geschrieben noch hat sinnvolle Variablen Namen

warum funktioniert dieser codeschipsel so:

Code: Alles auswählen

class g:


    def bereich(self , wert):
        self.bereich = 3
        self.funktions_wert = 8
        if (self.funktions_wert >=50 - self.bereich) and (self.funktions_wert <= 50 + self.bereich):
            self.funktions_wert = 50
        if self.funktions_wert > self.bereich + 50:
            self.funktions_wert -= self.bereich
        if self.funktions_wert <50 -  self.bereich:
            self.funktions_wert += self.bereich
        return self.funktions_wert

print(i.bereich(8))
wenn ich ihn in eine scleife setze aber nicht?

Code: Alles auswählen

class g:


    def bereich(self , wert):
        self.bereich = 3
        self.funktions_wert = 8
        if (self.funktions_wert >=50 - self.bereich) and (self.funktions_wert <= 50 + self.bereich):
            self.funktions_wert = 50
        if self.funktions_wert > self.bereich + 50:
            self.funktions_wert -= self.bereich
        if self.funktions_wert <50 -  self.bereich:
            self.funktions_wert += self.bereich
        return self.funktions_wert


while True:
    print(i.bereich(8))
bitte helft mir!
LG sauterle
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der funktioniert gar nicht.

Und dieses permanente binden von Werten an self ist wirklich weder noetig, noch gut. Das produziert im Zweifel Fehler. Spar dir das. Wirklich.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Sei i eine Instanz von g(), damit der Code läuft. Dann setzt Du self.bereich = 3 und überschreibst damit die Methode , so dass ein weiterer Aufruf nicht mehr funktioniert.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

@kbr gut gesehn. Und @sauterle da siehst du mal, was dieses unnoetige an-die-Instanz-kleben anstellt, und warum das ne doofe Idee ist.
sauterle
User
Beiträge: 81
Registriert: Mittwoch 27. Juli 2022, 21:33

das ist vieleicht ein doofer fehler er wird mir eine lektion sein. danke für euer schnelles antworten
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich sehe auch gar nicht warum das überhaupt eine Methode sein sollte, denn `self` wird nicht verwendet. Zudem wird das `wert`-Argument auch nicht verwendet. Die ”Methode” gibt einfach einen konstanten Wert zurück. Das ist letztendlich nur das hier:

Code: Alles auswählen

while True:
    print(11)
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten