Я знаю, что означает двойное подчеркивание для атрибутов/методов класса Python, но означает ли это что-то для аргумента метода?
Похоже, вы не можете передать аргумент, начинающийся с двойного подчеркивания методам. Это запутанно, потому что вы можете сделать это для обычных функций.
Рассмотрим этот script:
def egg(__a=None):
return __a
print "egg(1) =",
print egg(1)
print
class Spam(object):
def egg(self, __a=None):
return __a
print "Spam().egg(__a=1) =",
print Spam().egg(__a=1)
Запуск этого script дает:
egg(1) = 1
Spam().egg(__a=1) =
Traceback (most recent call last):
File "/....py", line 15, in <module>
print Spam().egg(__a=1)
TypeError: egg() got an unexpected keyword argument '__a'
Я проверил это с помощью Python 2.7.2.
Некоторые другие примеры
Это работает:
def egg(self, __a):
return __a
class Spam(object):
egg = egg
Spam().egg(__a=1)
Это не означает:
class Spam(object):
def _egg(self, __a=None):
return __a
def egg(self, a):
return self._egg(__a=a)
Spam().egg(1)