你的
YEAR
是列表类型。python的列表是可变的。在所有大写字母中拼写它意味着一旦设置就不应该更改它(一个“常量”),但这只是一个python根本没有强制执行的约定。
如果您想要一个可以更改的单独副本,而不是对全局的引用,请执行
yYEAR = YEAR[:]
相反。那么这个副本就属于这个班了。
这个
[:]
是一种切片表示法,它只复制整件事,因为您没有指定边界。
yYEAR = YEAR.copy()
也可以,但前者在列表方面更为传统。
如果需要每个实例的副本,请在
__init__
相反,就像
self.yYEAR = YEAR[:]
是的。真的,你可以拼写成
self.year
.那就更像是蟒蛇了。
通过使用不可变元组而不是列表,您可以对常量进行更具防御性的编码,以防止意外变异。然后你就可以把你的本地名单
yYear = [*YEAR]
或者如果你还在使用旧版本的python,
yYear = list(YEAR)
也行。但是要注意,不可变元组仍然可以包含可变元素,因此这也不能完全强制执行常量正确性。
还要注意,语法如下
APR=JUN=SEP=NOV=[0]*30
意味着这四个月都将引用同一个列表对象。