可能重复:
private members in python
我真的很想隐藏一些变量,因为它们不属于我的类之外。而且,所有这些未记录的变量都使继承变得无用。
如何隐藏不想在对象外部显示的变量?
为了澄清我为什么需要私有变量,首先是一个无法隐藏变量的例子,这只是一个不便,然后是另一个真正的问题:
class MyObject(object):
def __init__(self, length):
self.length = length
def __len__(self):
return length
item = MyObject(5)
item.length
len(item)
所以我有两种方法可以访问这个项目的“长度”。这只是一个不便,没有什么可怕的。
from wares import ImplementationSpecific
class MyThing(object):
def __init__(self):
self.__no_access_even_if_useful = ImplementationSpecific()
def restricted_access(self):
return self.__no_access_even_if_useful.mutable_value
thing = MyThing()
thing.restricted_access()
thing._MyThing__no_access_even_if_useful.something_useful_for_someone()
所以说我希望有一天改变实现。很有可能它会破坏某些东西,除非我真的将实现细节隐藏起来。
我会尽可能的接受它。“任何人”都可以从我的实现细节中找到一个有用的东西并使用它,即使我强烈反对这样做!说“不,它不在那儿,试试别的就容易多了。”