Почему бы не принять любые ключевые аргументы.Вы можете использовать атрибут класса для допустимых имен ключевых слов и их значений по умолчанию.
class Class(object):
_defaults = dict(kw0=42, kw1=None, kw2=True, kw3="Ni!")
def __init__(self, **kwargs):
# Raise exception if any non-supported keywords supplied
if set(kwargs.keys()) - set(self._defaults.keys()):
raise KeyError("unsupported keyword argument")
# Update our instance with defaults, then keyword args
self.__dict__.update(self._defaults)
self.__dict__.update(kwargs)
Если вы хотите использовать одну и ту же функциональность в нескольких методах (например, __init__()
и null()
), просто разбейте аргументобрабатывать код в своем собственном методе и вызывать его из обоих мест.
Недостатком является то, что help()
и другие инструменты документации Python не будут отображать допустимые аргументы ключевых слов, поскольку они отсутствуют в сигнатуре вашего метода..
Кстати, я не совсем уверен, почему вы храните ключи и значения отдельно.Просто сохраните их как словарь, а затем получите ключи или значения, когда вы хотите их, используя метод .keys()
или .values()
словаря.