当前位置: 首页 > news >正文

【Python类管理】装饰器@的实际用法和查询

在项目中如果需要用到全局类管理,则需要用到一些更加快捷管理类的方式
首先我们看看语法
首先创建类

@dataclass
class cache:userdate: int = 1

这里的@dataclass指的是装饰器,用来快速构建装饰器

那什么是装饰器呢?
装饰器本质上是一个函数,它接收另一个函数或类作为输入,然后返回一个新的、经过修改的函数或类。@ 符号是使用装饰器的语法糖。

@dataclass 有什么用?
在 Python 中,定义一个类通常需要写很多模板化的代码,比如 init (构造函数), repr (用于打印对象信息), eq (用于比较两个对象是否相等) 等。@dataclass 装饰器会自动为你生成这些方法。

比如对于一般构建类,我们通常用以下这种方式:

class GlobalState:def __init__(self):self.user_data = UserData()self.statistics = Statistics()self.logging = Logging()self.algorithm = Algorithm()self.inference = Inference()self.results = Results()def __repr__(self):# 需要自己写一个很长的字符串来表示对象return f"GlobalState(user_data={self.user_data}, ...)"def __eq__(self, other):# 需要自己比较每一个字段return (self.user_data == other.user_data andself.statistics == other.statistics and ...)

那么现在只需要一句话就可以概括了
那么在目前这种现代化的操作当中有几种格式操作规范

userdata:Optional[int] = 1 

这里的optional指的是类型提示 (Type Hint)。它本身在程序运行时不起强制作用,但它对开发者和开发工具有着至关重要的指示意义。
这里的optional代表的是:
它本身不是一个具体的类型,而是一个修饰符。Optional[X] 是 Union[X, None] 的简写形式。
Union[X, None] 的意思是“可以是 X 类型,也可以是 None 值”。

userdata:Optional[int] = filed(defaut_factory = None)

在这里filed指的是为这个字段设置默认值

后面的default_factiory 指的是每次调用的时候每个实例都有独立的空列表作为默认值。
与 default 的区别:default 是静态值,而 default_factory 是动态调用的函数,用于生成默认值。

那么整段话翻译过来就是userdata的值应该是int或者其他,当调用的时候会给一个默认值none作为基础

userdata:List[int] = filed(defaut_dactory = None)

这里的list同样是指示器,代表的是:这个值应该是list,当提供了int值,不然生成一个空列表

调用

那么在调用的时候

global = Global()
global.userdata = 2
http://www.dtcms.com/a/277720.html

相关文章:

  • QML 自定义Model基础之QAbstractListModel
  • 流程管理系统中,授权临时节点的技术方案
  • RabbitMQ队列的选择
  • Qt窗口:QToolBar、QStatusBar、QDockWidget、QDialog
  • HTML 段落标签
  • 深度剖析:std::vector 内存机制与 push_back 扩容策略
  • Mysql 笔记
  • 深度学习图像分类数据集—水质量识别分类
  • 单例模式详解:确保一个类只有一个实例
  • 代码随想录算法训练营day29
  • 常见Spring事务失效原理解析
  • 力扣面试150题--单词搜索
  • Java面试基础:面向对象(2)
  • CCPD 车牌数据集提取标注,并转为标准 YOLO 格式
  • C++--红黑树封装实现set和map
  • duckdb和pyarrow读写arrow格式的方法
  • H3C无线旁挂2层直接转发组网模拟实验
  • opendrive文件的格式
  • 专业PPT图片提取工具,操作简单
  • 【Python练习】041. 编写一个函数,检查一个二叉树是否是平衡二叉树
  • 大数据在UI前端的应用深化研究:用户行为数据的情感分析
  • MySQL实操:将Word表格数据导入MySQL表
  • python学习——Matplotlib库的基础
  • 4. MyISAM vs InnoDB:深入解析MySQL两大存储引擎
  • c语言进阶 深度剖析数据在内存中的存储
  • Spring-----MVC配置和基本原理
  • Opencv---blobFromImage
  • macos安装iper3
  • Java面试(基础题)-第一篇!
  • C++模版编程:类模版与继承