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

У меня есть класс с несколькими атрибутами класса, которые я хотел бы инициализировать с помощью методов класса. Это потому, что у меня в списке около 300 элементов, и я бы предпочел не включать их в определение класса. Поскольку у меня будет как минимум несколько сотен объектов этого класса, было бы неэффективно читать, а затем создавать атрибут для каждого отдельного экземпляра, когда они не будут изменять два определенных мной списка, и только чтение из них.

class exampleClass:

    @classmethod
    def getUnsupportedEvents(cls):
        with open("randomfile.json") as file:
            return json.load(file)

    supportedEvents = []
    unsupportedEvents = getUnsupportedEvents()

Я хочу установить атрибут класса unsupportedEvent, используя метод класса getUnsupportedEvents(), но когда я пытаюсь сделать это описанным выше способом, я получаю следующую ошибку:

unsupportedEvents = getUnsupportedEvents()

TypeError: 'classmethod' object is not callable

Это кажется очень простым, я просто упускаю из виду что-то действительно легкое?

1 Ответ

1 голос
/ 07 мая 2020

Вы пытаетесь использовать метод класса до того, как класс полностью определен. Вы должны отложить звонок после определения:

class exampleClass:

    @classmethod
    def getUnsupportedEvents(cls):
        with open("randomfile.json") as file:
            return json.load(file)

    supportedEvents = []

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