按名称分类属性

时间:2019-05-17 15:35:39

标签: python class

参数字典传递给类。还声明了类属性。在一个循环中,我通过名称为类属性分配了一个值,但它不会出来... getattr写道,没有这样的属性...它完全陷入了失望之中...

def __init__(self, parent, **kwargs):
        ttk.Frame.__init__(self, master=parent)
        self.kwargs = kwargs
        self.__background = None 
        self.__foreground = None
        self.__master = parent
        self.__child = None
        self.__text = None
        self.__border = None
        self.__font = None
        self.__bordercolor = None
        self.__sticky = None
for key in self.kwargs.keys():
            if key in CustomButton.__optionsList:
                self.__key = self.kwargs.get(key)
                # getattr(self,'__'+key) raise AttributeError: '__'+key not in class
            else:
                raise ValueError('Can\'t find the parameter: {0}'.format(key))

1 个答案:

答案 0 :(得分:0)

这是因为Private Variables

您可以通过两种方式修复代码:

  1. 更改属性名称,使其开头仅带有一个下划线,例如_master,而不是__master

  2. 使用getattr作为类的名称:getattr(self, '_' + self.__class__.__name__ + '__' + key)