编辑-我想出来了
所以我有一个定义如下的类:
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.\u ao=(1,0)并打印BaseLocation对象,我会在字典中看到_ao
,这是我永远不想看到的。那么我需要做什么来隐藏这个变量呢?你知道吗
bl = BaseLocation({'x':1,'y':10})
bl._ao = 1
print(bl)
您将看到_ao
出现在对象的dict中。你知道吗
**解决方案:**
相关问题 更多 >
编程相关推荐