создание атрибута класса после инициализации в python - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть класс в python, определенный следующим образом:

class MyClass:
    def __init__(self, x, y):
        self.x = x
        self.y = y

Мне нужно, чтобы у объекта был дополнительный атрибут z, который зависит от x, y. Обычно я просто определяю это в инициализаторе:

def MyClass:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.z = x + y

Проблема в том, что в моем реальном примере создание z занимает много времени (это длинные sympy операции над полиномами), и мне нужно это значение несколько раз в коде, поэтому вычислять его каждый раз не вариант. Хотя я просто создал метод

    ...
    def initialise_z(self):
        self.z = x+y

, однако вызов MyClasS(1,2).z без инициализации z сначала явно возвращает AttributeError. Я мог бы просто использовать try / catch, когда мне это нужно, но я использую в другом контексте, поэтому я немного обеспокоен распространением try. Есть ли лучшая практика для решения этой проблемы в Python?

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