在Python中,没有内置的`const`修饰符来定义常量,但可以通过自定义类来实现常量的概念。以下是如何在Python类中定义常量的步骤:
2. 在类中定义一个`__setattr__`方法,用于拦截对类实例属性的赋值操作。
3. 在`__setattr__`方法中,检查属性名是否已经存在于实例的字典中,如果存在则抛出异常,表示不能修改常量。
4. 检查属性名是否全为大写字母,如果不是则抛出异常,表示命名不符合规范。
5. 如果属性名有效,则将值赋给实例的字典。
下面是一个简单的示例代码:
const.py
class Const:
class ConstError(TypeError):
pass
class ConstCaseError(ConstError):
pass
def __setattr__(self, key, value):
if key in self.__dict__:
raise self.ConstError(f"Can't change a const variable: {key}")
if not key.isupper():
raise self.ConstCaseError(f"Const variable must be in uppercase: {key}")
self.__dict__[key] = value 赋值操作
使用自定义常量类
from const import Const
const = Const()
const.TEST = 'HH' 正常赋值
print(const.TEST) 输出: HH
尝试修改变量(将抛出异常)
const.TEST = 'JJ' ConstError: Can't change a const variable: TEST
尝试常量名称为小写字母(将抛出异常)
const.test = 'HH' ConstCaseError: Const variable must be in uppercase: test
请注意,在上面的代码中,`__setattr__`方法中赋值操作时使用了`value`,这是因为`value`是一个元组,第一个元素是异常信息,第二个元素才是要赋的值。
使用这种自定义常量类的方式,可以确保类的属性在创建后不会被修改,符合常量的概念。