iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >构造Python中的常量类
  • 566
分享到

构造Python中的常量类

常量Python 2023-01-31 05:01:01 566人浏览 八月长安

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

摘要

python中不存在像const那样的常量关键字,只是在内建空间中提供了一小部分常量,比如True、False、None等。那么在Python中如何使用常量呢?一般来说有如下两种方法: 通过命名风格来提示使用者该变量代表的

python中不存在像const那样的常量关键字,只是在内建空间中提供了一小部分常量,比如True、False、None等。那么在Python中如何使用常量呢?一般来说有如下两种方法:

  • 通过命名风格来提示使用者该变量代表的意义为常量,比如MAX_NUMBER、TOTAL。然而这种方式并没有真正实现常量,其对应的值仍然可以被改变,这只是一种约定俗成的风格。
  • 通过自定义类实现常量功能。这要求符合“命名全部为大写”和“值一旦被绑定便不可再修改”这两个条件。下面我们就来看一个例子。

    
    #coding:utf-8
    
    class _const:
      class ConstError(TypeError): pass
      class ConstCaseError(ConstError): pass
    
      def __setattr__(self, name, value):
          if name in self.__dict__:
              raise self.ConstError("can't change const %s" % name)
          if not name.isupper():
              raise self.ConstCaseError('const name "%s" is not all uppercase' % name)
          self.__dict__[name] = value
    
    import sys
    sys.modules[__name__] = _const()
    • 如果上面的代码对应的模块名为const,使用的时候只要import const,便可以直接定义常量了,比如:

      import const
      const.AUTHOR = 'tzw0745'
    • 上面的const.AUTHOR定义后便不可再更改,因此const.AUTHOR = ‘anonymity’会抛出const.ConstError异常,而常量名称如果小写,如const.author = ‘tzw0745’,也会抛出const.ConstCaseError异常。


无论采用那种方式实现常量,都建议将常量集中到一个文件中,因为这样有利于维护,一旦修改常量的值,可以集中统一进行而不是逐个进行检查。

  • 举个例子

    
    #coding:utf-8
    
    class _const:
      class ConstError(TypeError): pass
      class ConstCaseError(ConstError): pass
    
      def __setattr__(self, name, value):
          if name in self.__dict__:
              raise self.ConstError("can't change const %s" % name)
          if not name.isupper():
              raise self.ConstCaseError('const name "%s" is not all uppercase' % name)
          self.__dict__[name] = value
    
    const = _const()
    const.PI = 3.14
  • 假设上面的模组名是cosnt,使用文件可以写成:

    from const import const
    print(const.PI)

--结束END--

本文标题: 构造Python中的常量类

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 构造Python中的常量类
    Python中不存在像const那样的常量关键字,只是在内建空间中提供了一小部分常量,比如True、False、None等。那么在Python中如何使用常量呢?一般来说有如下两种方法: 通过命名风格来提示使用者该变量代表的...
    99+
    2023-01-31
    常量 Python
  • Python 中类的构造方法 __New__的妙用
    目录1、概述 2、__new__ 和 __init__ 的区别3、应用1:改变内置的不可变类型4、应用2:实现一个单例5、应用3:客户端缓存6、应用4:不同文件不同的解密方法1、概述...
    99+
    2022-11-12
  • 浅谈Python类里的__init__方法函数,Python类的构造函数
    如果某类里没有__init__方法函数,通过类名字创建的实例对象为空,切没有初始化;如果有此方法函数,通常作为类的第一个方法函数,有点像C++等语言里的构造函数。 class Ca: def __ini...
    99+
    2022-06-04
    函数 浅谈 方法
  • python如何调用父类构造函数
    python中使用super函数调用父类构造函数,具体方法如下:首先,在python项目中,定义一个Adata类,并创建一个__init__构造函数;class Adatadef __init__(self,num):self,num = ...
    99+
    2022-10-10
  • C++中类对象的拷贝构造函数
    本篇内容主要讲解“C++中类对象的拷贝构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中类对象的拷贝构造函数”吧!拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一...
    99+
    2023-06-17
  • JAVA继承中子父类的构造方法
    首先,构造方法本身会有一个隐式的无参构造(默认):①不写构造方法,类中的第一行代码事实上有一个默认的无参构造(系统会隐式为你写好)public class Student { private String name; // ...
    99+
    2017-07-16
    java教程 继承 构造方法
  • javascript中的类,继承,构造函数详解
    目录前言一、Class类二、es5构造函数三、实例、类的关系实例的原型指向类的原型Constructor四、继承es6继承es5继承的实现总结前言 在es5中实现一个构造函数,并用n...
    99+
    2022-11-13
  • C#中构造线性表的类有哪些
    这篇文章将为大家详细讲解有关C#中构造线性表的类有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。让我们来看看C#数据结构与算法之构造线性表的类的代码使用:public interface&n...
    99+
    2023-06-18
  • C++类初探常量成员函数与构造函数初始值列表分析
    这篇文章主要讲解了“C++类初探常量成员函数与构造函数初始值列表分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类初探常量成员函数与构造函数初始值列表分析”吧!头文件mycpp.h#...
    99+
    2023-06-04
  • python如何在一个类中定义多个构造函数
    这篇文章将为大家详细讲解有关python如何在一个类中定义多个构造函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在一个类中定义多个构造函数函数重载是编程语言(不含 P...
    99+
    2022-10-19
  • Python 定义自己的常量类
    在实际的程序开发中,我们通常会将一个不可变的变量声明为一个常量。在很多高级语言中都会提供常量的关键字来定义常量,如 C++ 中的 const , Java 中的 final 等,但是 Python 语言因为变量无类型,所以也就不存在这样的...
    99+
    2023-01-31
    自己的 常量 定义
  • C++类继承时的构造函数
    前言: 子类需要编写自己的构造函数和析构函数,需要注意的是,子类只负责对新增的成员进行初始化和扫尾编写构造和析构函数,父类成员的初始化和扫尾工作由父类的构造函数和析构函数完成。 无论...
    99+
    2022-11-13
  • C#构造函数在基类和父类中的执行顺序
    一、简介 当我们没有在子类构造函数中写上 base(),默认会先调用父类中无参的构造函数,再调用子类。当在有参构造函数后写上base时,只调用子类构造函数中有参的构造函数,隐藏父类无...
    99+
    2022-11-13
  • 关于Java类的构造方法详解
    ​Java语言中,类的构造方法是一种很特殊的方法。关于构造方法要记忆和理解的知识点其实挺多的,下面我们就来详细的讲讲构造方法,相信看过这篇文章之后,你会对构造方法有一个比较深刻的认识...
    99+
    2023-01-28
    java类的构造方法 java类的构造方法有什么作用 java类的构造函数怎么写
  • python中构造函数有什么用
    python中构造函数的作用有以下几点构造函数主要用于在类的对象创建时定义初始化的状态,它没有返回值,也不能用void来修饰。构造函数可以给创建的对象建立一个标识符。构造函数可以为对象数据成员开辟内存空间。构造函数可以完成对象数据成员的初始...
    99+
    2022-10-06
  • Python中怎么构造一个列表
    Python中怎么构造一个列表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python构造列表语法代码示例:#!/usr/bin/env python  ...
    99+
    2023-06-17
  • python列表的构造方法list()
    前言: 在很多语言中都有这种情况,需要把一组数集中存储起来方便后面的使用,而且还要求这组数能够随意的去查询,取出,排序,删除等等。这里大家可能想到了数组这个概念,也就是其他语言中的a...
    99+
    2022-11-13
  • C++构造函数一些常见的坑
    文章转自微信 公众号:Coder梁(ID:Coder_LT) 某一天我们接到了一个需求,需要开发一个类似于STL中string的类。 我们很快写好了代码: #include <...
    99+
    2022-11-12
  • swing的常用构造方法有哪些
    swing的常用构造方法有:1. JFrame():创建一个新的顶层窗口。2. JFrame(String title):创建一个新...
    99+
    2023-08-26
    swing
  • Python 类中定义多个构造器方法重载与泛方法
    目录引言什么是“泛方法”?举个栗子 一般实现有没有更好的方式?缺点#1 单分派#2 不支持 typing替代方案:multimethod 库优势更更好的实践方...
    99+
    2023-03-22
    Python 类多个构造器方法 Python 方法重载泛方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作