大多数Pythonic初始化实例变量的方法

时间:2017-08-06 20:44:30

标签: python pandas

我目前正在进行一些重型数据分析项目,并且正在尝试创建一个Python包装器类,以帮助简化清理数据时所涉及的许多普通预处理步骤,将其划分为测试/验证集,将其标准化最终的想法是将原始数据转换为易于消费的处理矩阵,以便机器学习算法输入用于培训和测试目的。理想情况下,我正朝着

的方向努力
data = DataModel(AbstractDataModel)
processed_data = data.execute_pipeline(**kwargs)

因此,在很多情况下,我会从self.df开始,这是我的实例的pandas数据框对象。但是可以将一种方法称为standardize_data(),并最终返回名为self.std_df的标准化数据框。

我的IDE一直在抱怨我在__init__之外初始化变量。因此,为了安抚PyCharm,我在构造函数中使用了以下代码:

class AbstractDataModel(ABC):

    @abstractmethod
    def __init__(self, input_path, ...,  **kwargs):

        self.df_train, self.df_test, self.train_ID, self.test_ID, self.primary_key, ... (many more variables) = None, None, None, None, None, ...

稍后,正在初始化和设置这些属性。我承认我来自重型Java Spring项目,所以我仍然习惯于冗长地声明变量。是否有更多Pythonic方式在此处声明我的实例属性?我知道我必须使用所有None值来违反DRY。

我已经研究过SO,并遇到了这个similar question,但提供的答案更多是关于通过argv设置实例变量,所以它不是直接的解决方案在我的背景下。

1 个答案:

答案 0 :(得分:2)

使用链式分配:

item-2

或者设置默认为self.df_train = self.df_test = self.train_ID = self.test_ID = self.primary_key = ... = None 的抽象属性(所以你不必设置它们)