这是使用“self\uuu attr”的“正确”方式吗?

2024-03-29 11:49:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在学习Python语言大约有一年了,慢慢地进入“神奇的Python命令”领域。我必须把手弄脏才能掌握__self.setattr__的概念,这是我第一次使用它。请让我知道,如果我使用它“正确”,以及以何种方式,我可以改善它。这是因为我没有任何同行来交叉检查我写的东西,因此我认为这个渠道可能是一个寻求建议的好渠道

使用以下引用:Link here

注意confirmed, recovered, deathsDataFrames

class PlotGo:
    __acceptable_keys_list = ['crd','crd_colors','crd_layout_params', 'Date', 'bar_params']
    def __init__(self, **kwargs):  
        self.fig = go.Figure()
        self.markers = {}

        for key in kwargs.keys():
            if key in self.__acceptable_keys_list:
                self.__setattr__(key, kwargs.get(key, None))

    def _go_bar(self, *args,**kwargs):
        return go.Bar(*args, **kwargs)



    def update_graph_crd(self):
        for crd_name, df in self.crd.items():            
            self.fig.add_trace(self._go_bar(x=df[self.__acceptable_keys_list
                                                  [self.__acceptable_keys_list.index('Date')]],                          
                                       y=df[crd_name],
                                       name=crd_name, 
                                       marker_color=self.crd_colors[crd_name]))
        self.fig.update_layout(**self.crd_layout_params)
        self.fig.show()
            
    def reset_fig():
        # reset figure to clean state again.
        self.fig = go.Figure()
    

crd_dict = {'crd': {'Confirmed': confirmed, 'Recovered': recovered, 'Deaths': deaths},
            'crd_colors': {'Confirmed': 'blue', 'Recovered': 'green', 'Deaths': 'red'},
             'crd_layout_params': { 'title':'Worldwide Corona Virus Cases - Confirmed, Deaths, Recovered (Bar Chart)',
                                    'xaxis_tickfont_size':12,
                                    'yaxis':dict(title='Number of Cases',
                                                 titlefont_size=16,
                                                 tickfont_size=12,)}}
a = PlotGo(**crd_dict)
a.update_graph_crd()