如何使私有变量在Python中不可访问?[重复]
问题内容:
这个问题已经在这里有了答案 :
Python在类中是否有“私有”变量? (12个答案)
5年前关闭。
class Car(object):
def __init__(self, color, engine, oil):
self.color = color
self.__engine = engine
self.__oil = oil
a = Car('black', 'a cool engine', 'some cool oil')
我们假设__engine和__oil变量是私有的,这意味着我无法通过a .__
engine之类的调用来访问它们。但是,我可以使用__dict__变量来访问甚至更改这些变量。
# Accessing
a.__dict__
{'_Car__engine': 'a cool engine', 'color': 'black', '_Car__oil': 'some cool oil'}
# Changing
a.__dict__['_Car__engine'] = "yet another cool engine"
a.__dict__
{'_Car__engine': 'yet another cool engine', 'color': 'black', '_Car__oil': 'some cool oil'}
问题很简单。我希望仅 在 类 内部 访问和更改私有变量。
问题答案:
您尝试做的事在Python中是不可能的。
Python中不存在只能从对象内部访问的“私有”实例变量。
https://docs.python.org/2/tutorial/classes.html#private-variables-and-class-
local-references