Как передать класс в конструктор в python?

Пользователь

от linnea , в категории: Python , 2 месяца назад

Как передать класс в конструктор в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от abel , 2 месяца назад

@linnea 

В Python передача класса в конструктор осуществляется так же, как и передача любого другого аргумента. Просто указывайте класс в качестве аргумента при вызове конструктора.


Например, у вас есть класс Person и класс Company, и в классе Company вам нужно иметь доступ к классу Person:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Person:
    def __init__(self, name):
        self.name = name

class Company:
    def __init__(self, name, person_class):
        self.name = name
        self.person_class = person_class

person = Person("John")
company = Company("Example Company", Person)


В этом примере класс Company принимает два аргумента: name и person_class. Мы передаем класс Person в качестве значения аргумента person_class при создании экземпляра класса Company.


Теперь у нас есть доступ к классу Person внутри класса Company и можем использовать его по необходимости. Например, мы можем создавать экземпляры класса Person внутри класса Company:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Company:
    def __init__(self, name, person_class):
        self.name = name
        self.person_class = person_class

    def create_person(self, name):
        person = self.person_class(name)
        return person

company = Company("Example Company", Person)
person = company.create_person("John")
print(person.name)  # Output: "John"


В этом примере мы создали новый метод create_person, который создает экземпляр класса Person с использованием переданного класса person_class. Мы можем вызвать этот метод на экземпляре класса Company и получить доступ к экземпляру класса Person, созданному внутри него.


Надеюсь, это помогло! Если возникли дополнительные вопросы, пожалуйста, дайте мне знать.