问题描述
有没有办法设置Python对象属性object.attribute
来返回函数或getter方法?
例如:
class CrossSection():
def __init__(self):
self.data = pd.Series([1,3,5,np.nan,6,8])
现在构建一个Panel()对象,我希望有一个属性Panel.data,每次都从底层的CrossSection对象返回数据(最好不要复制数据):
class Panel():
def __init__(self):
# - Core Object - #
self.xs = dict()
self.xs[1] = CrossSection()
self.xs[2] = CrossSection()
# - Data Object - #
self.data = self.find_data()
def find_data(self):
self.data = dict()
for n in self.xs.keys():
self.data[n] = self.xs[n].data
return self.data
在上面的示例中,有两个问题:
-
find_data()
方法仅在__init__
上运行,但如果任何底层CrossSections()发生更改(或在__init__
之后加载),则self.data将不代表底层的CrossSection()
对象。 -
self.data
构造一个新的字典。
但它确实模仿了我想要的行为:
p = Panel()
p.data
{1: 0 1
1 3
2 5
3 NaN
4 6
5 8
dtype: float64,
2: 0 1
1 3
2 5
3 NaN
4 6
5 8
dtype: float64}
因此,
-
有没有办法可以请求
Panel.data
,以便它根据CrossSection()
对象的基础self.xs字典进行CrossSection()
。 -
Panel.data
可以在底层的CrossSection()
对象上返回一个函数吗? [或者我是使用类方法进行交互的唯一选择?]
1楼
有没有办法设置Python对象属性object.attribute来返回函数或getter方法?
这是的典型用例
Panel.data可以在底层的CrossSection()对象上返回一个函数吗?
您是否明确存储了CrossSection()对象的列表?