Вы можете использовать hasattr
if hasattr(self, 'state'):
...
или поймать AttributeError
себя (что, собственно, и есть все, что hasattr
делает):
try:
x = self.state
except AttributeError:
print("No state")
else:
print(f"State is {x}")
Однако, гораздо лучше просто инициализировать атрибут в None
в методе __init__
.
def __init__(self, name, city):
self.name = name
self.city = city
self.state = None
Тогда вы можете просто проверить значение self.state
при необходимости.
if self.state is not None:
...
Кроме того, если вы не хотите выполнять какую-либо проверку значения state
, просто предоставьте пользователю прямой доступ к self.state
, а не используйте метод для установки значения.
x = MyClass("bob", "Townsville")
x.state = "Vermont" # rather than x.setState("Vermont")