在我的代码中,我有一个数据存储,其中多个变量设置为类似于下面的类的实例。 (原因是这个Interval
类有很多运算符覆盖函数。)
class Interval(object):
def __init__(self, value):
self.value = value
data_store.a = Interval(1)
我希望对data_store.a
的任何引用都返回self.value
而不是Interval
实例。这可能吗?
答案 0 :(得分:1)
作为Malik's answer的替代方案,您可以a
为@property
,Pythonic等效于get
和set
,用于管理对内部属性的访问:
class DataStore(object):
def __init__(self):
self.a = Interval(1)
@property
def a(self):
return self._a.value
@a.setter
def a(self, value):
self._a = value
此处_a
是 private-by-convention 属性,用于存储Interval
实例。这可以按你的需要工作:
>>> store = DataStore()
>>> store.a
1
答案 1 :(得分:0)
您需要扩展其属性为间隔对象的数据存储:
class DataStore(object):
def __init__(self):
self.a = Interval(1)
def __getattribute__(self, attr):
if attr == 'a':
return object.__getattribute__(self, 'a').value
if attr != 'a':
return object.__getattribute__(self, attr)