参数字典传递给类。还声明了类属性。在一个循环中,我通过名称为类属性分配了一个值,但它不会出来... 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))
答案 0 :(得分:0)
这是因为Private Variables。
您可以通过两种方式修复代码:
更改属性名称,使其开头仅带有一个下划线,例如_master
,而不是__master
。
使用getattr
作为类的名称:getattr(self, '_' + self.__class__.__name__ + '__' + key)