python常量的值可以改变吗,类保护创建python常量

python常量的值可以被改变吗

python常量所存储的值是可以被改变的。因为python当中并没有像c\c++中的const这样的关键词,及相应的避免被修改的保护程序机制。通常情况下,python的常量的值只是“约定俗成”地当成不可改变的(不去改变)。python当中声明命名常量的方式也一般是约定俗成的用大写的英文词来表示。那python可不可以创建不可改变的常量呢?我们先来看一个实例:


通过类保护创建python常量

class Const():
    def __init__(self,value):
        self.__value = value
    def getValue(self):
        return self.__value
YUMING = Const("x1y1z1.com")
YUMING.getValue()
YUMING.__value
YUMING = 2 #重新赋值,变量被改变
YUMING
——————————————————————————————————————
代码输出:
'x1y1z1.com'
AttributeError                            Traceback (most recent call last)
<ipython-input-9> in <module>
      6 YUMING = Const("x1y1z1.com")
      7 YUMING.getValue()
----> 8 YUMING.__value

AttributeError: 'Const' object has no attribute '__value'
2

代码解析

如上代码,实例中创建了一个Const类,并通过类的成员保护机制初始化了一个__value的成员,同时声明了一个获取值的getValue()函数。我们可以通过类的方法来获取受保护的类成员值,而不能直接通过成员访问的方式直接获取,这在一定程度上保护了该类实例的值被修改。当我们不难看出,我们是用变量YUMING来存储Const类的实例,一旦变量YUMING被重新赋值,YUMING的值依然会被改变。python类的保护机制可参考:python类成员保护和访问限制,及该设计的编程思想



笨鸟问答 / python问答 :





Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.