Кеширование результата вычисляемых свойств

class Person:
	def __init__(self, name, lastname):
		self._name = name
		self._lastname = lastname
		self._fullname = None  # для сохранения результата вычисления
		

	@property
	def name(self):
		return self._name
	
	@name.setter
	def name(self, value):
		self._name = value
		self._fullname = None

	@property
	def lastname(self):
		return self._lastname
	
	@lastname.setter
	def lastname(self, value):
		self._lastname = value
		self._fullname = None

	@property
	def full_name(self):
		# Проверяем и кешируем вычисляемое свойство
		if self._fullname is None:
			self._fullname = f"{self._name} {self._lastname}"
		return self._fullname

Last updated