Как и во всех хороших примерах, вы упростили то, что вы на самом деле пытаетесь сделать. Это хорошо, но стоит отметить, что python имеет гибкость , когда дело доходит до переменных класса и экземпляра. То же самое можно сказать о методах. Для хорошего списка возможностей я рекомендую прочитать введение новых классов в стиле Michael Fötsch , особенно разделы с 2 по 6.
Одна вещь, которая требует много работы, чтобы помнить, когда начало работы заключается в том, что python не является java. Больше, чем просто клише. В java компилируется весь класс, что делает разрешение пространства имен реальным простым: любые переменные, объявленные вне метода (в любом месте), являются переменными экземпляра (или, если статические, классные) и неявно доступны в методах.
С помощью python главное правило состоит в том, что для переменных есть три пространства имен:
{begin pedagogy}
Есть исключения для этого. Главное, что происходит со мной, заключается в том, что при загрузке определения класса определение класса является его собственным неявным пространством имен. Но это продолжается только до тех пор, пока модуль загружается и полностью исключается, когда внутри метода. Таким образом:
>>> class A(object):
foo = 'foo'
bar = foo
>>> A.foo
'foo'
>>> A.bar
'foo'
, но:
>>> class B(object):
foo = 'foo'
def get_foo():
return foo
bar = get_foo()
Traceback (most recent call last):
File "", line 1, in
class B(object):
File "", line 5, in B
bar = get_foo()
File "", line 4, in get_foo
return foo
NameError: global name 'foo' is not defined
{end pedagogy}
В конце концов, нужно помнить, что вы / g2] имеют доступ к любой из переменных, к которым вы хотите получить доступ, но, вероятно, неявно. Если ваши цели просты и понятны, то для Foo.bar или self.bar, вероятно, будет достаточно. Если ваш пример становится более сложным или вы хотите делать причудливые вещи, такие как наследование (вы можете наследовать методы static / class!), Или идея ссылаться на имя вашего класса внутри самого класса кажется вам неправильной, проверьте интро я связал.
Есть ли что-то, что мне не хватает в том, как это решить?
blockquote>Радиостанции GPS отключены нормально, поскольку они являются основным утечкой батареи. Следовательно,
getLastKnownLocation()
может часто возвращатьnull
или устаревшее местоположение, потому что ничего не проверяет исправления местоположения.getLastKnownLocation()
, следовательно, полезен, если у вас случайный интерес к местоположению и он счастлив, если нет места.Если вам нужно знать местоположение, вам нужно будет использовать
requestLocationUpdates()
или аналогичный материал, чтобы заставить Android подключиться к GPS-радио и активно пытаться найти местоположение.
LocationManager
и егоrequestLocationUpdates()
. – CommonsWare 5 June 2015 в 11:53