В моем случае мне пришлось добавить android: debuggable = "false" в манифест .. Работало даже без нескольких дней назад.
__ method
: частный метод. __ method __
: специальный метод Python. Они названы так, чтобы предотвратить конфликты имен. Список этих специальных методов можно найти на этой странице. _method
: Это рекомендуемое соглашение об именах для защищенных методов в руководстве по стилю Python . Из руководства по стилю :
_single_leading_underscore
: слабый индикатор «внутреннего использования». Напримериз M import *
не импортирует объекты, имена которых начинаются с подчеркивания.
single_trailing_underscore_
: используется по соглашению, чтобы избежать конфликтов с Ключевое слово Python, напримерTkinter.Toplevel (master, class _ = 'ClassName')
__ double_leading_underscore
: при именовании атрибута класса вызывает name искажение (внутри классаFooBar
, __boo становится_FooBar__boo
; см. ниже).
__ double_leading_and_trailing_underscore __
: «магические» объекты или атрибуты, которые живут в пространствах имен, контролируемых пользователем. Например,__ init __
,__ import __
или__ file __
. Никогда не придумывайте таких имен; только используйте их как описано в документации.
метод
- это обычный метод _method
не следует вызывать, если вы не знаете, что делаете, что обычно означает что вы сами написали метод. __ method
два символа подчеркивания используются для предотвращения искажения имени. Подобные атрибуты или методы доступны через instance._ClassName__method
. Хотя многие люди называют это «частным», это не , а не . Вы никогда не должны использовать это, чтобы предотвратить доступ к этому методу кому-либо, вместо этого используйте _method
. __ method __
используется для специальных методов, которые изменяют поведение экземпляра. Не называйте так свои собственные методы. Это все соглашения, поэтому они никоим образом не применяются. Тем не менее, вы обычно можете ожидать:
__somename__
Что-то определенное в самой спецификации языка Python. Не используйте это в своем собственном именовании.
_somename
Обычно предполагается, что это вызывается через какой-то другой механизм, а не напрямую. Подобно объявлению чего-то закрытого на большинстве других языков, но никак не принудительно.
__somename
Это , на самом деле не предполагается, что он вызывается напрямую, и внутренне искажен, чтобы вы не сделали это случайно. Если вам действительно нужно вызвать его по какой-либо причине, посмотрите документацию, чтобы узнать, как это сделать.
Любое из вышеперечисленного может в равной степени применяться к именам функций, переменных или классов.
Эти методы были названы так, чтобы уменьшить вероятность коллизий имен.
Методы с префиксом и двойным подчеркиванием обычно помечаются таким образом, чтобы указать, что они являются частью спецификации языка Python.
Некоторые методы с двойным префиксом подчеркивания и суффиксом являются специальными. Например, __ init __
вызывается всякий раз, когда создается экземпляр этого класса, а __ str __
вызывается, когда объект должен быть напечатан. В основном их можно называть по-особенному. Вы можете использовать их, как любой другой метод, или вы можете вызывать их особым способом, связанным с ними.
Я не знаю о глобальных функциях с двойным подчеркиванием (не принадлежащих ни к какому классу), но я думаю, что их нет. т любой.
Шаблон __ name __
указывает на «магические» методы. Они вызываются различными функциями, такими как
str(x) -> x.__str__()
repr(x) -> x.__repr__()
x[0] -> x.__getitem__(0)
etc
. Одиночный префикс подчеркивания указывает на частный атрибут и соблюдается только в соответствии с соглашением.
двойной префикс подчеркивания инициирует изменение имени, где атрибут с именем __attr изменяется на __Class_attr при
Используемый вами шаблон _method__ на самом деле ни для чего не используется.