В настоящее время я пробую свои силы на новых конструкциях класса данных, представленных в Python 3.7. В настоящее время я застрял при попытке сделать наследование родительского класса. Похоже, что порядок аргументов не соответствует моему текущему подходу, так что параметр bool в дочернем классе передается перед другими параметрами. Это вызывает ошибку типа.
from dataclasses import dataclass
@dataclass
class Parent:
name: str
age: int
ugly: bool = False
def print_name(self):
print(self.name)
def print_age(self):
print(self.age)
def print_id(self):
print(f'The Name is {self.name} and {self.name} is {self.age} year old')
@dataclass
class Child(Parent):
school: str
ugly: bool = True
jack = Parent('jack snr', 32, ugly=True)
jack_son = Child('jack jnr', 12, school = 'havard', ugly=True)
jack.print_id()
jack_son.print_id()
Когда я запускаю этот код, я получаю эту TypeError
:
TypeError: non-default argument 'school' follows default argument
Как это исправить?