• 1000 они создают. Это похоже на вариант использования
@property
?
Есть ли способ определить в Python, какие методы должны вызываться автоматически с помощью некоторого декоратора, чтобы я мог смягчить последствия использования метода execute
?
Ниже приведен простой пример:
import pandas as pd
class Preprocessor:
def __init__(self, df=pd.DataFrame([]), some_cond=False):
assert len(df)
assert isinstance(some_cond, bool)
self.some_cond = some_cond
self.df = df
self.cols = ["col1", "col3"]
def filter_columns(self):
for c in self.cols:
assert c in self.df.columns
self.df = self.df[self.cols]
def filter_rows(self):
self.df = self.df[self.df["foo"] == self.some_cond]
def execute(self):
self.filter_columns()
self.filter_rows()
df = pd.DataFrame(data={"foo": [True, False, True, False, True], "bar": ["a", "a", "b", "b", "a"]})
pp = Preprocessor(df, some_cond=True).execute()
df = pp.df
EDIT:
import pandas as pd
class Preprocessor:
def __init__(self, df=pd.DataFrame([]), some_cond=False):
assert len(df)
assert isinstance(some_cond, bool)
self.some_cond = some_cond
self.df = df
self.cols = ["col1", "col3"]
self.filter_columns()
self.filter_rows()
def filter_columns(self):
for c in self.cols:
assert c in self.df.columns
self.df = self.df[self.cols]
def filter_rows(self):
self.df = self.df[self.df["foo"] == self.some_cond]
df = pd.DataFrame(data={"foo": [True, False, True, False, True], "bar": ["a", "a", "b", "b", "a"]})
df = Preprocessor(df, some_cond=True).df
Так что что-то больше похоже на поведение входа и выхода.