Answer

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)))


Report Page