Как передать экземпляр класса в процедуру __init__ этого класса? [дубликат]Python

Программы на Python
Anonymous
Как передать экземпляр класса в процедуру __init__ этого класса? [дубликат]

Сообщение Anonymous »

У меня есть комплект разработки для контроля качества, который позволяет создавать объекты и переопределять их свойства, а также свойства их вложенных зависимостей за один вызов:
Пример:

Код: Выделить всё

class VendorCreateModel():

def __init__(self,

registered_replacement_vendor_id: str | None = None,
registered_replacement_vendor : VendorCreateModel | None = None,
unregistered_vendor_retailer_id: str | None = None,
unregistered_vendor_retailer: RetailerCreateModel | None = None,

name: str | None = None,
is_registered: str | None = None,
contact_email: str | None = None,
contact_phone: str | None = None,
hq_city: str | None = None,
hq_state: str | None = None,
hq_country: str | None = None) -> None:

self.name = name
self.registered_replacement_vendor_id = registered_replacement_vendor_id
self.registered_replacement_vendor = registered_replacement_vendor
self.unregistered_vendor_retailer_id = unregistered_vendor_retailer_id
self.unregistered_vendor_retailer = unregistered_vendor_retailer
self.is_registered = is_registered
self.contact_email = contact_email
self.contact_phone = contact_phone
self.hq_city = hq_city
self.hq_state = hq_state
self.hq_country = hq_country
Вы заметите, что существует два ссылочных идентификатора: зарегистрированный_replacement_vendor_id и unregistered_vendor_retailer_id. Если пользователь предоставляет их, отлично, это означает, что он уже создал зарегистрированного_заменяющего_вендора и незарегистрированного_вендор_розничного торговца и хочет, чтобы вы их использовали. Если НЕТ, пакет разработки QA создаст VendorCreateModel и RetailCreateModel по умолчанию, а затем позволит им использовать параметры Registered_replacement_vendor и unregistered_vendor_retailer для предоставления переопределений (возможно, они захотят создать unregistered_vendor_retailer с конкретным именем для своего теста).
Все это работает очень хорошо везде, за исключением случаев, когда один из параметров переопределения имеет тот же тип, что и CreateModel, который я создаю. , как и в случае с Register_replacement_vendor. Это тип VendorCreateModel, поскольку он указывает на другого поставщика, назначенного для замены этого в нашей системе. Python это не нравится, так как он говорит: «VendorCreateModel не определен» в строке Registered_replacement_vendor : VendorCreateModel | Нет = Нет.
Я понимаю, почему это так, но как лучше это обойти? Этот шаблон отлично работает в C# и Typescript, но создание объектов Python отличается. У меня будет еще несколько отношений между объектами одного и того же типа, поэтому я хочу убедиться, что здесь следую хорошему шаблону, чтобы у моей команды была хорошая основа для построения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... it-routine

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