Ich versuche zu sehen, ob eine Instanz eines Attributs bereits für mein Objekt existiert. Wie Sie unten sehen können, möchte ich etwas tun, wenn mein Dog
Objekt ein bestimmtes Attribut hat, über die do_something_if_has_aged
Methode. Wie kann ich prüfen, ob ein bestimmtes Attribut bereits deklariert wurde? Normalerweise würden Sie überprüfen die Existenz mit so etwas wie dieses, die False
zurückgibt:Prüfen, ob sich die Methode bereits im Objekt befindet?
obj = None
if obj:
print(True)
else:
print(False)
Hier ist meine kleinsten reproduzierbaren Beispiel:
>>> class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def add_years(self, years):
self.age += years
self.has_aged = True
def do_something_if_has_aged(self):
if self.has_aged:
print("The dog has aged and is %d years closer to death" % self.years)
else:
print("The dog hasn't aged, apparently.")
>>> dog = Dog('Spot', 3)
>>> dog.age
3
>>> dog.do_something_if_has_aged()
Traceback (most recent call last):
File "<pyshell#193>", line 1, in <module>
dog.do_something_if_has_aged()
File "<pyshell#190>", line 9, in do_something_if_has_aged
if not self.has_aged:
AttributeError: 'Dog' object has no attribute 'has_aged'
>>> dog.add_years(1)
>>> dog.age
4
>>> dog.do_something_if_has_aged()
The dog hasn't aged, apparently.
eindeutig der Hund hat Alter, though.
Ich entschuldige mich, wenn der Titel nicht widerspiegelt, was ich unten vermitteln möchte; Ich bin neu in OOP.
Ihr Zustand ist falsch herum: Sie sollten 'if self.has_aged' tun. –