【发布时间】:2014-09-15 12:51:28
【问题描述】:
我想设置一个在对象初始化阶段(即在 __init__() 方法期间)导入一些 raw_data 的对象。但是,我想让它从那时起只读。我正在考虑使用具有以下逻辑的 setter 属性 self.raw_data:
@raw_data.setter
def raw_data(self, dataframe):
<IF calling from __init__>?
self.__raw_data = df
有没有办法让setter方法知道它是否从__init__中被调用?
阻止所有其他更改数据的尝试。
【问题讨论】:
-
试试this recipe。
-
为什么不直接设置
self.__raw_data? -
我希望能够在 __init__() 方法中设置它,但没有其他地方可以有效地将变量 .__raw_data 转换为只读属性。我想保证它的状态,所以我以后不会无意中分配给 __raw_data。
-
我应该清楚一点。我同意
self.__raw_data通过将 raw_data 设为私有来修复外部可访问性。但是我想保护它免受其他对同一类中的数据进行操作的内部方法的影响。
标签: python oop properties pandas setter