Существует разница между атрибутом, имеющим значение "Нет", и атрибутом, который вообще не существует. Это аналог неопределенной переменной: приведенный ниже код завершается ошибкой, когда my_variable
не определен вместо возврата False
:
>>> my_variable == None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'my_variable' is not defined
Чтобы проверить, есть ли у объекта атрибут имени долготы, вы можете использовать:
# Returns True/False depending on whether x.longitude is an existing attribute
>>> hasattr(x, 'longitude')
False
Чтобы увидеть это поведение в вашем коде, вы можете изменить функции get_longitude / get_latitude следующим образом:
def get_latitude(x):
if hasattr(x,'latitude') and (x.latitude is not None):
return x.latitude
def get_longitude(x):
if hasattr(x,'longitude') and (x.longitude is not None):
return x.longitude