Что такое инвариантность класса
Python
Senior
Без компании
Что такое инвариантность класса
Ответы
Инвариант класса — это условие или набор условий, которые всегда должны выполняться для объектов класса в течение их жизненного цикла (кроме, возможно, момента внутри метода). Это гарантирует корректное состояние объекта.
Пример:
```
class BankAccount:
def __init__(self, balance: float):
self._balance = balance
# Инвариант: баланс не может быть отрицательным
assert self._balance >= 0, "Balance cannot be negative"
def withdraw(self, amount: float):
# Проверяем инвариант перед операцией
assert self._balance - amount >= 0, "Insufficient funds"
self._balance -= amount
# Проверяем инвариант после операции
assert self._balance >= 0, "Balance became negative"
```
Ключевые моменты:
- Инварианты проверяются в конструкторе
- Проверяются до и после изменяющих методов
- Нарушение инварианта — ошибка в логике класса
- Часто проверяются через assert (в продакшне можно отключить)