Che*_*ery 5 python oop private
可能重复:
python中的私有成员
我有一些我真想隐藏的变量,因为它们不属于我的课堂.所有这些未记录的变量都会使继承变得无用.
如何隐藏您不希望在对象外显示的变量?
为了澄清为什么我需要私有变量,首先一个无法隐藏变量的例子只是一个不便,然后另一个真的是一个问题:
class MyObject(object):
def __init__(self, length):
self.length = length
def __len__(self):
return length
item = MyObject(5)
item.length
len(item)
Run Code Online (Sandbox Code Playgroud)
所以我有两种方法可以在这里访问项目的"长度".这只是一个不便而且没什么可怕的.
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()
Run Code Online (Sandbox Code Playgroud)
所以说我希望有一天能改变实现......除非我真的埋没了实现细节,否则很有可能会破坏它.
我会接受它,因为任何人都可以编程.那个'任何人'可以从我的实现细节中找到一个有用的东西并使用它,即使我强烈劝阻这样做!只是说:"不,它不存在,尝试别的东西."