Exception
не принимает аргументов ключевого слова, он принимает только переменное количество позиционных параметров через *args
, поэтому вам нужно изменить **kwargs
на *args
.Также я бы порекомендовал передать message
и expression
вместе с *args
на super()
вызов.В конце концов, пример, который, вероятно, не нарушает LSP:
class StudentValueError(Exception):
"""Base class exceptions for Student Values"""
def __init__(self, message='', *args):
super().__init__(message, *args)
self.message = message
class MissingStudentValue(StudentValueError):
def __init__(self, message='', expression='', *args):
super().__init__(message, expression, *args)
self.expression = expression
def __str__(self):
return "Message: {0} Parameters: {1}".format(self.message, self.expression)
e = Exception('message', 'expression', 'yet_another_argument')
print(e)
e = StudentValueError('message', 'expression', 'yet_another_argument')
print(e)
e = MissingStudentValue('message', 'expression', 'yet_another_argument')
print(e)
e = MissingStudentValue()
print(e)