今天我看到 - python將_$CLASSNAME$
添加到名稱爲__
的方法中。Python'隱藏'方法__
簡單的例子:
>>> class A:
... def a(self):
... self.b()
... def b(self):
... print('A.b')
...
>>> class B(A):
... def b(self):
... print('B.b')
...
>>> B().a()
B.b
這項工作,但是:
>>> class A:
... def a(self):
... self.__b()
... def __b(self):
... print('A.b')
...
>>> class B(A):
... def __b(self):
... print('B.b')
...
>>> B().a()
A.b
爲什麼?我不知道,所以我推薦它。這裏是:
>>> print([fn for fn in dir(B) if fn[-2:] != '__'])
['_A__b', '_B__b', 'a']
爲什麼python做到這一點?有沒有辦法繞過呢?
所以它更像保護 - 子類不能使用它。 –
@xiado在所有語言中,我都知道該功能區分'private'和'protected','privateted'是子類不可訪問的,因此更接近於此。你說的是哪種語言的「保護」? – delnan
不好意思 - 我在想另外一件事 - 你得到了很多。 –