python对象属性能否返回函数

2024-04-25 04:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法设置Python对象属性object.attribute来返回函数或getter方法?你知道吗

例如:

class CrossSection():
    def __init__(self):
        self.data = pd.Series([1,3,5,np.nan,6,8])

现在构造一个Panel()对象,我想要一个属性面板数据每次从底层横截面对象返回数据(最好不复制数据):

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

在上面的例子中,有两个问题:

  1. find_data()方法只在__init__上运行,但是如果任何底层的CrossSections()发生了变化(或者在__init__之后加载),那么自我数据不会表示底层的CrossSection()对象。你知道吗
  2. 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}

因此

  1. 有没有一种方法可以请求Panel.data这样 基于基础架构的更新自我.xs词典 CrossSection()对象。你知道吗
  2. 可以Panel.data返回底层上的函数吗 CrossSection()对象?[或者是我使用 类方法?]你知道吗

Tags: 数据对象方法函数selfdata属性init
1条回答
网友
1楼 · 发布于 2024-04-25 04:33:51

Is there a way to set a Python object attribute object.attribute to return a function or getter method?

这是http://docs.python.org/2/library/functions.html#property的典型用例

Can Panel.data return a function over the underlying CrossSection() objects?

是否显式存储CrossSection()对象的列表?你知道吗

相关问题 更多 >