У меня есть класс, который имеет атрибут, который является фреймворком pandas. Я хотел бы определить другой атрибут в том же классе, который изменяется при изменении данных. Я думал, что сеттер может быть правильным, но я не смог заставить его работать. Вот это игрушка пример:установить атрибут при изменении атрибута в python
import pandas as pd
class Foo(object):
def __init__(self, df=None):
self._df = df
self.altered = False # bool, set to True if self._df changes
@property
def df(self):
return self._df
@df.setter
def df(self, df):
self.altered = True # since _df might change here set self.altered True
self._df = df
df_test = pd.DataFrame([[1,2,3]], columns=['a','b','c'])
cl = Foo(df_test)
cl.df.loc[0, 'a'] = 3 # change a default value in dataframe
print(cl.df)
print(cl.altered)
который печатает измененную dataframe но cl.altered по-прежнему установлен в значение False.
Любые предложения?
Хорошее предложение, единственная проблема заключается в том, что экземпляры класса будет занимать в два раза больше памяти, это может быть проблематично, как datafram может быть довольно большим. – derchambers