我知道双下划线对 Python 类属性/方法意味着什么,但它对方法参数意味着什么?
看起来你不能以双下划线开头的参数传递给方法。这很令人困惑,因为您可以为正常功能做到这一点。
考虑这个脚本:
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)
运行此脚本会产生:
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)