我希望能够声明特定的变量和不可变的对象。 (当可以更改应视为不可变的对象实例变量时,就会出现问题。)一种想法是使用命名元组。
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
,我仍然会收到错误。]
有更好的方法吗?
谢谢。
[当您定义类时,我认为您是在定义引用自己的变量a,b,c。
def __init__(self, a, b, c):
self.c_tuple = C_tuple(a='a', b='b', c='c')
而且,您在第20行中缺少缩进。
@property
def c(self):
return self.c_tuple.c
请随意纠正我,因为namedtuple对我来说是一个全新的话题:)