Почему я получаю загадочный "TypeError: могу обновить значение только с помощью строки или числа"?
Это действительно странно. Если я запускаю этот код (как тест на нос), он печатает "-0:34:00.0" и все хорошо
def test_o1(self):
observer = ephem.Observer()
observer.lon, observer.lat = math.radians(73.9), math.radians(40.7)
observer.horizon = '-0:34'
print observer.horizon
но если я запустите это:
def test_o2(self):
location = UserLocation()
location.foo()
где UserLocation:
# Document is mongoengine.Document
class UserLocation(Document):
[...]
def foo(self):
observer = ephem.Observer()
observer.lon, observer.lat = math.radians(73.9), math.radians(40.7)
observer.horizon = '-0:34'
Я получил:
Traceback (most recent call last):
File "/home/roy/deploy/current/python/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/home/roy/deploy/current/code/pyza/models/test_user_location.py", line 82, in test_o2
location.foo()
File "/home/roy/deploy/current/code/pyza/models/user_location.py", line 134, in foo
observer.horizon = '-0:34'
TypeError: can only update value with String or number
Есть идеи, что может происходить?
1 ответ
Arrggghhh. Я понял. Мой исходный файл UserLocation начинается с:
из будущего импорта unicode_literals
очевидно, _libastro настаивает на последовательности ascii, а не на юникоде.