Я недавно читал книгу " Изучение Python от О'Рейли " (Страница 944, Глава 31), и было упомянуто, что при использовании двойных подчеркиваний __
в качестве начальных символов методаили переменная в Class
, она автоматически добавляет _classname
к этой функции, где classname
- имя класса.Это делается для локализации имени в классе, к которому оно принадлежит.Это называется Имя искажения в контексте Атрибуты псевдоприватного класса .
Таким образом, вы можете использовать одно и то же имя __variable
в двух разных классах A
и B
, поскольку переменные / методы станут приватными _A__variable
и _B__variable
соответственно.Поэтому просто назовите вашу глобальную функцию как-нибудь еще с одним подчеркиванием, например, чтобы избежать этого конфликта.