Написать метакласс init, который рассчитывает на то, что методы создаваемого им класса полностью аннотированы. Для каждого позиционного параметра обычного метода в этом классе предусматривается значение по умолчанию (если оно не было задано) на основании типа в аннотации.

   1 class C(metaclass=init):
   2     def __init__(self, var: int, rng: range, lst: list[int], defined: str = "defined"):
   3         self.data = f"{var}/{rng}/{lst}/{defined}"
   4 
   5 for c in (C(), C(1, range(3)), C(rng=range(4, 7)), C(lst=[1, 2, 3], defined=3)):
   6     print(c.data)

0/None/[]/defined
1/range(0, 3)/[]/defined
0/range(4, 7)/[]/defined
0/None/[1, 2, 3]/3

Спойлер:


CategoryHomework

LecturesCMC/PythonIntro2022/Homework_InitParam (последним исправлял пользователь FrBrGeorge 2022-12-03 19:35:42)