我想查看一個屬性的實例是否已經存在於我的對象中。正如你在下面看到的,如果我的Dog
對象有一個特定的屬性,我想通過do_something_if_has_aged
方法做些事情。我如何檢查某個屬性是否已被聲明?通常你會檢查它是否存在有這樣的事情,它會返回False
:檢查方法已經在實例中嗎?
obj = None
if obj:
print(True)
else:
print(False)
這裏是我最小的可重複的例子:
>>> 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.
顯然已經歲的狗,雖然。
我很抱歉,如果標題沒有反映我想傳達的內容;我是OOP的新手。
你的情況是錯誤的:你應該做'如果self.has_aged'。 –