Я бы хотел иметь возможность объявлять указанные c переменные и объекты неизменяемыми. (Проблема возникает, когда переменные экземпляра объекта, которые должны рассматриваться как неизменяемые, могут быть изменены.) Одна мысль состоит в том, чтобы использовать именованные кортежи.
from collections import namedtuple
C_tuple = namedtuple('C_tuple', 'a b c')
class C:
def __init__(self, a, b, c):
self.c_tuple = C_tuple(a=a, b=b, c=c)
@property
def a(self):
return self.c_tuple.a
@property
def b(self):
return self.c_tuple.b
@property
def c(self):
return self.c_tuple.c
c = C(1, 2, 3)
print(c.a, c.b, c.c) # ==> `1 2 3`
(я не смог найти способ объявить C_tuple
в классе C
. Даже с from __future__ import annotations
я все еще получаю ошибку.)
Есть ли лучший подход?
Спасибо.