Заводской заводской заводчик с правильной подписьюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Заводской заводской заводчик с правильной подписью

Сообщение Anonymous »

Итак, я пытаюсь внедрить шаблон проектирования завода (Python 3.12+), и у меня возникают проблемы с тем, чтобы моя заводская подпись была правильной. Может быть, то, что я пытаюсь сделать, не общепринято, и я должен искать другой шаблон дизайна.from typing import ParamSpec, TypeVar

P = ParamSpec("P")
T = TypeVar("T")

class Base:
@classmethod
def factory(cls, *args:P.args, **kwargs:P.kwargs):
def f(parent):
return cls(parent, *args, **kwargs)
return f

class CustomA(Base):
def __init__(self, parent:str, arg1:int, arg2:int):
print(f"Instantiate CustomA with arg {parent}, {arg1}, {arg2}")

#Ideally I would like this method signature to match the CustomA constructor signature
#without the parent argument
test = CustomA.factory(1, 2)
print(test) #Does correctly return a method
a = test("parent")
print(a) # That when is called return the object correctly instantiate
< /code>
В моем случае использование я хотел бы частично подготовить вызов метода для создания объекта, пропуская для этого параметр. Позже я завершил бы этот частичный вызов, чтобы фактически создать объект. Для этого я внедрил метод заводского строителя в родительском классе, который позволил бы мне легко реализовать эту функцию во всех моих детских классах. Приведенный выше код работает нормально, но я теряю подпись и, следовательно, IDE Intellisense для конструктора подкласса. Может быть, другой подход, использующий метод нового , или декоратор был бы более подходящим? У меня не было успеха до сих пор с этим другим подходом.

Подробнее здесь: https://stackoverflow.com/questions/796 ... -signature
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Заводской заводской заводчик с правильной подписью
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Использование стратегии и заводской схемы с инъекцией зависимости
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как можно извлечь конструкцию объекта из заводской функции?
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Автоматическое управление подписью кода с помощью Bazel
    Anonymous » » в форуме IOS
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Счет с электронной подписью
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»