返回顶部
首页 > 资讯 > 后端开发 > Python >Python 定义自己的常量类
  • 871
分享到

Python 定义自己的常量类

自己的常量定义 2023-01-31 00:01:03 871人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

在实际的程序开发中,我们通常会将一个不可变的变量声明为一个常量。在很多高级语言中都会提供常量的关键字来定义常量,如 c++ 中的 const , Java 中的 final 等,但是 python 语言因为变量无类型,所以也就不存在这样的

在实际的程序开发中,我们通常会将一个不可变的变量声明为一个常量。在很多高级语言中都会提供常量的关键字来定义常量,如 c++ 中的 constJava 中的 final 等,但是 python 语言因为变量无类型,所以也就不存在这样的修饰符,其本身并未提供任何机制来进行常量的定义。因此我们只能通过自己定义类的方法来定义一个符合常量规则的类,使得该类定义的成员属性满足常量的属性。常量一般符合以下两条规则:

  1. 常量的各个字母使用大写字母表示,中间以下划线连接:如 MAX_VALUE;
  2. 常量的值一旦绑定则不可以再修改。

由于常量的值一旦绑定则不可再修改,所以也就是说对常量二次赋值时需要抛出异常。因此我们显然需要改写自定义的常量类的赋值方法。在 Python 中,当我们对类的属性进行赋值时,会自动调用 object 类的 __setattr__() 函数,该函数的定义如下:

object.__setattr__(self, name, value)

其中的 name 表示属性的名称,value 是试图赋值给 name 的值,其中 object 类的 object.__dict__ 以字典的形式保存了所有已赋值的属性。

因此我们可以通过定义一个常量类 constant 类(默认继承自object),并对 object.__setattr__() 方法进行重写。由于常量有两条规则,所以我们需要根据这两条规则自定义两个异常处理,分别是二次赋值的异常处理和名称非大写的异常处理。

异常处理的定义方式请参看:Python 错误和异常

定义常量类:

constant.py

import sys

class _const:
    # 自定义异常处理
    class ConstError(PermissionError):
        pass
    class ConstCaseError(ConstError):
        pass
    # 重写 __setattr__() 方法
    def __setattr__(self, name, value):
        if name in self.__dict__:  # 已包含该常量,不能二次赋值
            raise self.ConstError("Can't change const {0}".fORMat(name))
        if not name.isupper():  # 所有的字母需要大写
            raise self.ConstCaseError("const name {0} is not all uppercase".format(name))
        self.__dict__[name] = value

# 将系统加载的模块列表中的 constant 替换为 _const() 实例
sys.modules[__name__] = _const()

在其它文件中定义常量,test.py

import constant
constant.VALUE = 5
constant.VALUE = 4  # ConstError
constant.vaLue = 1  # ConstCaseError

当我们识图修改常量 VALUE 的值或者定义一个名称不是全部大写的常量时,都会抛出异常,这样就达到了不可更改常量的值的目的。

--结束END--

本文标题: Python 定义自己的常量类

本文链接: https://lsjlt.com/news/182646.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 定义自己的常量类
    在实际的程序开发中,我们通常会将一个不可变的变量声明为一个常量。在很多高级语言中都会提供常量的关键字来定义常量,如 C++ 中的 const , Java 中的 final 等,但是 Python 语言因为变量无类型,所以也就不存在这样的...
    99+
    2023-01-31
    自己的 常量 定义
  • python 自定义异常类学习
    #自定义异常类 class MyException(Exception): pass def exextp_01(): try: #come code here list = ['java...
    99+
    2023-01-31
    自定义 异常 python
  • JavaSpringMVC的自定义异常类
    目录1. 异常处理的思路2. 自定义异常处理器3. web的处理异常机制总结1. 异常处理的思路 在java中,对于异常的处理一般有两种方式: 一种在当前方法捕获处理(try-cat...
    99+
    2024-04-02
  • 怎么在python中自定义异常类
    这篇文章将为大家详细讲解有关怎么在python中自定义异常类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对...
    99+
    2023-06-14
  • python怎么实现自定义异常类
    本篇内容介绍了“python怎么实现自定义异常类”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明通常可以继承Exception或子类。命名...
    99+
    2023-06-30
  • python自定义异常
    python自定义异常try             异常在try块里抛,如果会产生多个异常,捕捉第一个,匹配except,后边的不再捕捉except: 抓异常else:       try无异常,才会执行elsefinally:   无论...
    99+
    2023-01-31
    自定义 异常 python
  • mysql怎么自定义常量
    在MySQL中,可以使用用户变量来模拟常量的功能。用户变量的值可以在会话期间保持不变。要定义一个常量,可以使用SET语句将一个值赋给...
    99+
    2023-09-25
    mysql
  • laravel怎么自定义常量
    这篇文章主要介绍了laravel怎么自定义常量的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇laravel怎么自定义常量文章都会有所收获,下面我们一起来看看吧。常量定义方案A:step1 按路径生成consta...
    99+
    2023-07-04
  • Python 自定义类的排序
    Python 里面自定义类的时候, 一般需要重写几个方法, __init__ 一般是构造函数 这里面有一个__cmp__() 是比较函数, 重写它的时候,一定要记得返回值有三个,0,±1  !! 而不是返回0,1   这里没有注意,导致在...
    99+
    2023-01-31
    自定义 Python
  • python中如何使用自定义异常类
    本篇文章为大家展示了python中如何使用自定义异常类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。自定义异常类自定义类继承系统的异常基类exception自定义异常类的构造函数等方法进行处理举例:...
    99+
    2023-06-20
  • Python导入自定义类
    现有自定义类(Color.py)如下,类位于路径’/Users/chuxing/python/test’下: class Color(object): def __init__(self, red, green, blu...
    99+
    2023-01-31
    自定义 Python
  • python定义变量类型
    目录定义变量什么是变量?变量的定义?标识符(命令规范)命名原则变量的类型不同类型变量之间的计算变量的输入变量的格式化输出变量赋值删除变量常量定义定义变量 什么是变量? 在程序运行过程中,其值可以改变的量 变量的定义?...
    99+
    2022-06-02
    python 变量 Python定义变量
  • PHP如何自定义异常类
    小编给大家分享一下PHP如何自定义异常类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  class MyE...
    99+
    2024-04-02
  • 如何自定义 PHP 异常类?
    如何自定义 php 异常类?扩展内置 exception 类,创建自定义异常类。在构造函数中传递消息、错误码和前一个异常(可选)。创建针对特定情况的自定义异常,提供更详细的错误消息。 ...
    99+
    2024-05-09
    php 自定义异常类
  • Python如何自定义元类
    这篇文章主要介绍了Python如何自定义元类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、说明一个类没有声明自己的元类,默认他的元类就是type,除了使用元类type,用...
    99+
    2023-06-14
  • python怎么定义自变量
    在 python 中定义自变量包含以下步骤:使用 = 语法定义自变量。遵循命名约定,以字母或下划线开头,区分大小写,不能使用 python 关键字。使用 input() 函数从用户获...
    99+
    2024-05-22
    python
  • Java中怎么自定义异常类
    Java中怎么自定义异常类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。自定义异常:步骤 ­一:创建一个类继承于Throwable或其子类;二:添加构造方法...
    99+
    2023-06-17
  • java自定义异常类怎么写
    要自定义一个异常类,你可以按照以下步骤进行操作: 创建一个新的Java类,命名为你想要的异常类名,并继承自Exception类或其...
    99+
    2024-02-29
    java
  • java怎么定义枚举常量类
    在Java中,可以使用enum关键字定义枚举常量类。 以下是定义枚举常量类的示例代码: public enum Weekday { ...
    99+
    2023-10-24
    java
  • MySQL 自定义变量@ 常用案例
    以下文章来源于SQL开发与优化,作者郑松华 大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 很久没有写文章,最近碰到了一个非常有意思的Oracle SQL 案例, 这个案例,我用了一些窗口函数来解决的,后来想想,能否跟MySQL...
    99+
    2019-03-05
    MySQL 自定义变量@ 常用案例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作