Моносостояние - это паттерн программирования при котором есть несколько объектов одного класса, и все экземпляры этого класса имеют одни общие атрибуты, любая работа в получении или изменении или удалении этих атрибутов, приводит к такому же изменению этих атрибутов у всех других экземпляров этого класса.
То есть у нас есть несколько объектов одного и того же класса, и все эти объекты ссылаются на одни и теже данные.
Реализация происходит через статический атрибут класса ссылка на который присваивается каждому новому созданному объекту.
class Monopattern():
__atributs = {
'id': 0,
'name': None
}
def __init__(self):
self.__dict__ = Monopattern.__atributs
x1 = Monopattern()
x2 = Monopattern()
print(f'x1:{x1.__dict__} x2:{x2.__dict__}')
x1.id = 15
x2.name = 'Hello world'
print(f'x1:{x1.__dict__} x2:{x2.__dict__}')
# Вывод
# x1:{'id': 0, 'name': None} x2:{'id': 0, 'name': None}
# x1:{'id': 15, 'name': 'Hello world'} x2:{'id': 15, 'name': 'Hello world'}