就我而言,我有这个课程:
class CSVUploader():
def __init__(self, **kwargs):
self.acc = kwargs['acc']
self.prod = kwargs['prod']
self.url_id = kwargs['url_id']
self.dest = kwargs['dest']
self.header = kwargs['header']
self.metadata = kwargs.copy()
self.table_name = '_'.join([self.prod, self.url_id])
这个类包含很多信息,并根据里面的内容做了很多事情**kwargs
。稍后,我将需要向要传递给此类的字典 (**kwargs) 添加更多参数。问题是我真的不知道是否需要再添加 2 个或 10 个参数。
现在我self.<variable>
在这个类中执行逻辑时使用。例如:
self.check_columns(self.table_name, self.header)
我的另一个想法是使用self.metadata['variable']
而不是self....
. 最后我的最后一个想法是创建一个单独的类来容纳所有self.header
这些。但在我的代码中,我会这样称呼它:
metadata = Metadata()
metadata.header
所以有很多方法可以做到这一点,最pythonic的方法是什么。另外,我对保持我的代码逻辑分离、干净且易于阅读很感兴趣。