У меня есть класс в 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?