Создание класса в python без прямого вызова конструктора - PullRequest
1 голос
/ 11 июля 2020

В python, если мы определяем класс с именем Start и инициализируем его аргументом, как показано ниже ...

class Start:
   def __init__(self, a):
      self.a = a

После определения и после импорта Start в другой файл python присутствует каким-либо способом создать функцию или атрибут внутри класса, чтобы я мог построить класс прямо следующим образом? как Start(1), поэтому я потенциально могу создать другой метод построения часто используемых значений без необходимости вручную помещать аргументы в конструктор Start(). Это вообще возможно в Python? Если нет, могу ли я воспользоваться альтернативными решениями для достижения аналогичного результата?

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Вы можете использовать метод stati c или метод класса:

class Start:
    def __init__(self, a):
        self.a = a

    @classmethod
    def make(cls):
        return cls(1)

Для создания экземпляра используйте следующее:

>>> s = Start.make()
>>> s.a
1
1 голос
/ 11 июля 2020

С методом stati c:

class Start:
    def __init__(self, a):
        self.a = a

    @staticmethod
    def make():
        return Start(1)

s = Start.make()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...