流畅的python-学习笔记_符合python风格的对象

对象表示形式

查看对象说明,可以通过__repr__和__str__方法,前者主要用于开发者,后者主要用于用户,这两个方法分别对内置函数repr和str函数提供支持

向量类

备选构造方法

classmethod和staticmethod

staticmethod用的不是特别多

格式化显示

format函数和str.format函数会调对象的__format__(format_spec)方法,上几个例子

format函数只用了格式规范微语言,str.format还用了格式字符串句法。可先了解format,再了解str.format

私有属性和受保护属性

主要有单下划线开头属性和双下划线开头属性,双下划线会隐式名称转化,单下划线开头的属性不会做处理,但起到提示的作用,不建议访问,但也可以访问。无论单还是双下划线都无法避免显式调用私有属性

使用__slots__节省空间

类属性默认存在__dict__里,这个属性是个字典,属性多时,大量实例会占用较多内存,为生内存可使用__slots__属性。使用了__slots__就会避免使用__default__属性,节省内存

__slots__是为了优化,不是为了约束

也可以显式给用slots属性的实例赋予dict属性,这起不到优化作用

注意如果需要自定义类支持弱引用,需要实现__weakref__属性(是属性不是方法),也需要再__slots__中添加该属性名

继承类使用__slots__时,每个子类都要显式实现,因为这个属性不会继承

当然属性不多时,也不是非得使用__slots__

覆盖类属性

实例默认属性可以通过类属性实现,也可通过__init__实现,如需刷新属性,直接继承修改类属性即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671809.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git tag 相关操作

文章目录 前言一、git里面的Tag二、Tag 类型1. 轻量级标签&#xff08;Lightweight Tag&#xff09;2. 注释标签&#xff08;Annotated Tag&#xff09; 其他常用操作git taggit show <tagname>git push origin <tagname>删除tag使用 gitk 查看效果 总结 前言 一般…

Go 语言(四)【常用包使用】

1、命令行参数包 flag flag 包就是一个用来解析命令行参数的工具。 1.1、os.Args import ("fmt""os" )func main() {if len(os.Args) > 0 {for index, arg : range os.Args {fmt.Printf("args[%d]%v\n", index, arg)}} } 运行结果&#…

Oracle程序常驻程序内存优化【数据库实例优化系列二】

Oracle系统参数调整【数据库实例优化系列一】-CSDN博客 Oracle数据库中有一个软件包 dbms_shared_pool,它可以keep和unkeep,将用户经常使用的程序,比如存储过程、函数、序列、触发器、游标以及java source等数据库对象,长期保存在这一块区域。这些程序可以常驻这个区域(s…

深度学习之基于Pytorch卷积神经网络人民币面值识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在日常生活和商业活动中&#xff0c;人民币面值识别技术具有重要的应用价值。传统的面值识别方法&am…

Spring Cloud Alibaba Sentinel 集成与限流实战(6)

Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbon 负载调用说明&…

信创基础软件之中间件

信创基础软件之中间件 中间件概述 中间件是一种应用于分布式系统的基础软件&#xff0c;位于应用与操作系统、数据库之间&#xff0c;主要用于解决分布式环境下数据传输、数据访问、应用调度、系统构建和系统集成、流程管理等问题&#xff0c;是分布式环境下支撑应用开发、运…

Unity 性能优化之光照优化(七)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、测试目的一、实时光源是什么&#xff1f;二、开始测试1.场景中只有一个光照的数值情况2.添加4个点光源后4.结果 总结 前言 实时光源数量越多&#x…

短信清空了!华为手机短信删除了怎么恢复?

“有没有人知道这是怎么回事呀&#xff0c;原先有一千多条未读一直放着没管&#xff0c;昨天根本没打开短信这个软件&#xff0c;今晚突然发现只剩一条了&#xff0c;是华为手机自动清理了吗&#xff01;到底该怎么恢复呀&#xff1f;我真崩溃&#xff01;” 在日常生活中&…

将jar包部署到CentOS7操作系统

1、手工部署项目 1、在IDEA中开发SpringBoot项目并打成jar包 &#xff08;通过Maven进行打包&#xff09; &#xff08;在target目录下的 jar包&#xff09; 2、将jar包上传到Linux服务器 # 创建目录&#xff0c;将项目jar包放到此目录 mkdir /usr/local/app 具体操作步骤&a…

力扣每日一练(螺旋矩阵)

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,…

Android Ant编译环境配置(Win)

1、 载ant包: 2、设置环境变量&#xff1a; 3、检查是否设置成功及版本 4、执行命令&#xff1a; android update project -p . -n “projectname”&#xff08;例如&#xff1a;android update project --target 1 -p . -n “Couplet”&#xff09;(只输入红色部分也是可以的…

Liunx磁盘管理(下)

中篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/138355036 一.逻辑卷 逻辑卷&#xff08;Logical Volume&#xff09;是逻辑卷管理 (LVM) 中的一个概念&#xff0c;它为 Linux 系统中的存储管理提供了更大的灵活性和可扩展性。LVM 允许你将物理存储设备&…