РЕДАКТИРОВАТЬ - Я понял это
Итак, у меня есть класс, как определено ниже:
class BaseLocation(dict):
_ao = None
_op = None
def __init__(self, iterable=None):
if iterable is None:
iterable = {}
self.update(iterable)
def __setattr__(self, key, value):
"""sets the attribute"""
if key.startswith("_"):
setattr(self, key, value)
else:
dict.__setitem__(self, key, value)
def __setattribute__ (self, key, value):
super(BaseGeometry, self).__setattribute__(key, value)
def __setitem__(self, key, value):
dict.__setitem__(self, key, value)
def __getattribute__ (self, name):
return super(BaseGeometry, self).__getattribute__(name)
def __getattr__(self, name): # support item attributes
try:
return dict.__getitem__(self, name)
except:
raise AttributeError("'%s' object has no attribute '%s'" % (type(self).__name__, name))
def __getitem__(self, k):
return dict.__getitem__(self, k)
В возвращенном словаре не отображаются значения "_"это нормально.Я хочу, чтобы эти атрибуты были приватными и не были видны пользователю.У меня вопрос такой, как мне установить эти значения?Если я делаю BaseLocation._ao = (1,0) и печатаю объект BaseLocation, я вижу _ao
в словаре, который я никогда не хочу видеть.Итак, что мне нужно сделать, чтобы скрыть эту переменную?
bl = BaseLocation({'x':1,'y':10})
bl._ao = 1
print(bl)
Вы увидите, что _ao
появляется в поле зрения объекта.