Ich habe eine Klasse Player() mit einer Funktion namens use_potion(). Wenn ich use_potion() in einer IF-Anweisung verwende, funktioniert es zunächst gut. Wenn sich der Rückgabewert für use_option ändert, ignoriert die if-Anweisung die Änderung!Aufruf einer Klassenfunktion in einer IF-Anweisung, wird immer True zurückgegeben
Hier ist ein Abschnitt des Codes:
class Player():
def __init__(self):
inventory = ["potion"]
def has_potion(self):
return any(item == "Potion" for item in self.inventory):
In einem weiteren Modul:
from Player import Player
def available_actions():
moves = ["go east","go west"]
if Player().has_potion():
moves.append("use potion")
return moves
Als ich available_actions() aufrufen, es gibt alle drei Züge, wie es soll. Wenn jedoch "Trank" aus dem Player() entfernt wird, gibt available_actions STILL alle drei Züge zurück anstatt nur "gehe nach Osten" und "gehe nach Westen". Ich habe keine Ahnung, warum das passiert.
Willkommen bei Stackoverflow-Datei. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune
'available_actions' erstellt bei jedem Aufruf eine neue' Player'-Instanz. Bist du sicher, dass du das machen willst? –
'Player .__ init__' erstellt kein Inventory-Attribut; das ist eine lokale Variable, und sie wird einfach verworfen. – user2357112