Answer
t.me/python_tesstОтвет:
Sample2(a=1, b=2, c=3)
Объяснение:
Декорировать можно не только функции, но и классы, например, можно реализовать декоратор, добавляющий метод преобразования класса в строку. Декоратор — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки». Декоратор имеет альтернативное название — обёртка. Оно более точно описывает суть паттерна: вы помещаете целевой объект в другой объект-обёртку, который запускает базовое поведение объекта, а затем добавляет к результату что-то своё.
Код:
from typing import Type
def auto_str(c: Type):
def str(self):
variables = [f"{k}={v}" for k, v in vars(self).items()]
return f"{c.__name__}({', '.join(variables)})"
c.__str__ = str
return c
class Sample1:
def __init__(self, a, b):
self.a = a
self.b = b
@auto_str
class Sample2(Sample1):
def __init__(self, a, b, c):
super().__init__(a, b)
self.c = c
print(str(Sample2(1, 2, 3)))