IsInstance () gibt falsch zurück, weil der Importpfad nicht gleich dem Klassentyp ist
Posted: 01 May 2025, 01:02
Ich möchte überprüfen, ob eine Variable eine bestimmte Klasse ist: < /p>
Ich arbeite gerade im Roguelike -Tutorial, aber aus einigen Gründen habe ich alle Codedateien auf SRC/und Komponenten in SRC/Komponenten /.
Wie kann ich dieses Problem lösen? Ich könnte einen String -Vergleich durchführen, aber dann fehlt mir der Typ, um Entfernung aufzurufen.
SRC/Components/inventory.py:
SRC/Components/consumable.py:
Code: Select all
if isinstance(inv, src.components.inventory.Inventory):
inv.items.remove(entity)
< /code>
, aber die Prüfung geht schief, da sich der Klassentyp vom Import unterscheidet: < /p>
print(f"type of inv: {type(inv)}")
< /code>
führt zu < /p>
type of inv:
Wie kann ich dieses Problem lösen? Ich könnte einen String -Vergleich durchführen, aber dann fehlt mir der Typ, um Entfernung aufzurufen.
Code: Select all
class BaseComponent:
...
Code: Select all
from src.components.base_component import BaseComponent
class Inventory(BaseComponent):
...
Code: Select all
from src.components.inventory import Inventory
class Consumable(BaseComponent):
def consume(self) -> None:
entity = self.parent
inv = entity.parent
if isinstance(inv, Inventory):
inv.items.remove(entity)