Как правильно переопределить переменные в классе?
Хочу переопределить переменные в классе для упрощения своего кода. Подскажите есть ли более 'элегантное' решение, чем мое?:
Вариант первый:
class KToplevel(Toplevel):
def __init__(self, parent, *args, **kwargs):
Toplevel.__init__(self, parent, *args, **kwargs)
def configure(self, *args, **kwargs):
self.dict = kwargs
self.dict_cn('bdsize', 'highlightthickness')
self.dict_cn('bgcolor', 'background')
self.dict_cn('bdcolor', 'highlightcolor')
self.dict_cn('bdbcolor', 'highlightbackground')
Toplevel.config(self, self.dict)
def dict_cn(self, find, change):
if self.dict.get(find) != None:
self.dict[change] = self.dict.pop(find)
else:
print('Ошибка: входные данные введены неверно!')
Вариант второй:
class KToplevel(Toplevel):
def __init__(self, parent, *args, **kwargs):
Toplevel.__init__(self, parent, *args, **kwargs)
def configure(self, bdsize=None, bgcolor=None, bdcolor=None, bdbcolor=None):
Toplevel.config(self,
highlightthickness=bdsize,
background=bgcolor,
highlightcolor=bdcolor,
highlightbackground=bdbcolor)
Вариант третий (наиболее перспективный, но требующий доработки):
class KToplevel(Toplevel):
def __init__(self, parent, *args, **kwargs):
Toplevel.__init__(self, parent, *args, **kwargs)
def configure(self, *args, **kwargs):
if kwargs == {}:
print('Help...')
else:
Toplevel.config(self, dict_change(kwargs))
class dict_change():
def __init__(self, dict={}):
dict2 = {}
change = {'bdsize' : 'highlightthickness',
'bgcolor' : 'background',
'bdcolor' : 'highlightcolor',
'bdbcolor' : 'highlightbackground'}
for value in dict:
if change.get(value) != None:
key = change[value]
dict2[key] = dict.pop(value)
return dict2