一文掌握python面向对象魔术方法(一)

devtools/2024/11/13 9:04:20/

目录

Python 中的魔术方法(Magic Methods)是一系列以双下划线开头和结尾的方法,它们在特定场景下会被 Python 解释器自动调用。这些方法让开发者可以定制类的行为,模拟类似内置类型的特性。

一、初始化和清理:

   1、构造方法 __init__(self, ...):  它是类中定义的一个构造方法,用于在创建类的实例时初始化对象的状态。每当通过 class_name() 创建一个新的类实例时,Python 会自动调用 __init__ 方法。

  2、__new__(cls, ...):  创建类实例时调用的第一个方法。它是类(class)级别的方法,主要负责创建并返回一个对象实例。当调用 cls() 创建类的新实例时,实际上首先调用的是 __new__ 方法,而不是 __init__ 方法。

  3、__del__(self): Python 中的一个特殊方法,称为析构方法或解构方法。当一个对象即将从内存中被删除(垃圾回收)之前,Python 解释器会尝试调用该对象的 __del__ 方法。它的主要用途是用于执行一些清理工作,例如关闭文件、网络连接,或者释放其他系统资源等。

二、属性访问:

1、__getattr__(self, name): 它允许一个对象在尝试访问一个不存在的属性时动态地创建和返回这个属性。 

2、__setattr__(self, name, value): 主要负责控制类属性的设置。当尝试给对象的实例或类变量赋值时,Python解释器会自动调用这个方法。

3、__getattribute__(self, name): 每次访问属性时均调用(优先级高于 __getattr__)。用来控制任何属性获取行为的核心方法。每当尝试访问对象的任何属性时,包括类属性和实例属性,Python解释器首先会调用__getattribute__方法。

4、__delattr__(self, name): 当尝试删除属性时调用。当尝试删除一个对象的属性时,Python 解释器会自动调用这个方法。

三、对象表示:


http://www.ppmy.cn/devtools/23846.html

相关文章

线上申报开放时间!2024年阜阳市大数据企业培育认定申报条件、流程和材料

2024年阜阳市大数据企业培育认定申报条件、流程和材料,线上申报开放时间整理如下 一、2024年阜阳市大数据企业培育认定申报要求 (一)经营范围 申请认定的企业应当从事以下生产经营活动: 1.从事数据收集、存储、使用、加工、传输、…

Rust检查一个Vec<String>是否包含一个特定的子字符串

在Rust中&#xff0c;你可以使用contains方法来检查一个Vec<&str>是否包含特定的字符串。但是&#xff0c;如果你想检查一个Vec是否包含一个特定的子字符串&#xff0c;你需要先将子字符串转换为String。 以下是一个示例代码&#xff0c;展示了如何检查一个Vec是否包…

谷歌TPU(Tensor Processing Unit)

谷歌TPU&#xff08;Tensor Processing Unit&#xff09; https://cloud.google.com/tpu/docs/intro-to-tpu?hlzh-cn CPU的工作模式和GPU工作模式的区别 CPU 最大的优点是它们的灵活性。您可以在 CPU 上为许多不同类型的应用加载任何类型的软件。对于每次计算&#xff0c;CPU…

ansible安装教程

一、启动系统前&#xff0c;加一块光驱&#xff0c;把安装镜像文件放到光驱中 二、配置Yum文件 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# rm -f * [rootlocalhost yum.repos.d]# vi cdrom.repo [BaseOS] nameBaseOS baseurlfile:///media/BaseO…

在idea中连接mysql

IDE&#xff08;集成开发环境&#xff09;是一种软件应用程序&#xff0c;它为开发者提供编程语言的开发环境&#xff0c;通常集成了编码、编译、调试和运行程序的多种功能。一个好的IDE可以大幅提高开发效率&#xff0c;尤其是在进行大型项目开发时。IDE通常包括以下几个核心组…

如何实现直播声卡反向给手机充电功能呢?

在数字化时代的浪潮中&#xff0c;声卡作为多媒体系统的核心组件&#xff0c;扮演着声波与数字信号相互转换的关键角色。它不仅能够将来自各类音源的原始声音信号转换为数字信号&#xff0c;进而输出到各类声响设备&#xff0c;更能够通过音乐设备数字接口(MIDI)发出合成乐器的…

aspose.word 在已有模板表格中动态插入新行

通过已有模板进行进行动态行&#xff0c;aspose版本为21.6 问题&#xff0c;使用insertAfter插入新行后&#xff0c;没有与原表格合并&#xff0c;而是形成了新的表格&#xff0c;这明显不符合要求&#xff0c;最后使用克隆行的方法进行插入&#xff0c;与原表格完美融合 主要…

Python正则表达式

Python中的正则表达式是通过内置的re模块来支持的。正则表达式是一种用于字符串搜索和操作的强大工具&#xff0c;它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。 以下是Python中使用正则表达式的基本方法&#xff1a; ### 1. 导入模块 在使用正则表达式之前…