魔术方法与魔术变量

一. 魔术方法

魔术方法是Python中一种特殊的方法,它们以双下划线开头和结尾(__name__),用于实现类的特殊行为。

常见魔术方法

  • __init__(self,......)初始化方法,在对象创建后调用,可用来初始化对象
  • __del__(self): 析构方法,在对象被销毁时调用

示例:

class Person: def __init__(self, name): self.name = name print(f"{self.name}被创建") def __del__(self): print(f"{self.name}被销毁") p = Person("张三") # 输出:张三被创建 del p # 输出:张三被销毁

1.1 __init__() 方法(初始化方法或构造方法)

人的姓名、年龄等信息都是与生俱来的属性,如何在生产过程中就赋予这些属性?

class Book: def __init__(self,title,author): # 定义一个__init__来初始化属性 self.title = title self.author = author # # 赋予title属性、author属性给实例化对象 # self.实例化对象属性 = 参数 def display_info(self): # 自定义函数 print(f'书籍名称{self.title}\n书籍作者{self.author}') B1 = Book('《python基础教学》','作者A') B1.display_info()

_init_()方法,在创建一个对象时默认被调用,不需要手动调用

_init_(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。

1.2 __str__()方法

当使用print输出对象的时候,默认打印对象的内存地址。

如果类定义了 __str__ 方法,那么就会打印从在这个方法中 return 的数据。(另外要特别注意__str__方法返回 字符串类型 的数据)

class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"Person: {self.name}, {self.age} years old" p = Person("Alice", 25) print(p) # 输出:Person: Alice, 25 years old

需要注意的是:

  1. __str__方法必须返回一个字符串类型(str)的值,否则会引发TypeError异常

1.3__del__() 方法(删除方法或析构方法)

__init__方法与__del__方法是一对
当删除对象时(调用del删除对象或者文件执行结束后),python解释器会自动调用 __del__() 方法。

class Dog(): def __init__(self): print('构造函数') def show(self): print('自定义函数') def __del__(self): # 析构方法 __del__ print('析构函数') def __str__(self): return "是的"

二. 魔术变量

1.__name__

__name__:判断当前文件中的函数或者其他功能的函数实在本地调用还是在外部调用
如果在本地调用但会的结果为__main__,如果在外部通过导入的方式进行调用则返回的结果为当前文件名

if __name__ == '__main__': # 这部分代码只有在直接运行该文件时才会执行 # 当文件被导入为模块时不会执行 print('This is the main program')

2.__file__

__file__: 查看文件的绝对路径,它可以帮助开发者获取脚本或模块的物理位置信息,在文件操作和路径处理中非常有用

使用示例:

# 获取当前文件路径 print(__file__)

三. 总结

3.1 魔法方法

__init__() :初始化方法或者称之为“构造函数”,在对象初始化时执行,其主要作用就是在对象初始化时,对对象进行初始化操作(如赋予属性)

__str__() :对象字符串方法,当我们在类的外部,使用print方法输出对象时被触发,其主要功能就是对对象进行打印输出操作,要求方法必须使用return返回 字符串 格式的数据。

__del__() :删除方法或者称之为“析构方法”,在对象被删除时触发(调用del删除对象或文件执行结束后),其主要作用就是适用于关闭文件、关闭数据库连接等等。

3.2 魔法变量

1.__name__

  • 作用:判断当前模块的调用方式
  • 本地执行:返回 __main__
  • 外部导入:返回模块文件名

2.__file__

  • 作用:获取当前文件的绝对路径
  • 用途:用于文件路径操作和定位

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

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

相关文章

红圈AI来了,工程人的“Excel+熬夜”模式可以终结了!

手指在键盘上机械地敲击,眼睛在屏幕和纸质报表间反复横跳,窗外的天从漆黑熬到泛起鱼肚白。第二天晨会,当老板指着PPT上那个对不上的数据皱眉时,你所有的辛劳瞬间化为无形——这,是不是你项目部的常态? 别再说什么“工程人都是熬出来的”,这分明是管理方式落伍的“工伤”。数据…

飞桨模型部署提速

💓 博客主页:借口的CSDN主页 ⏩ 文章专栏:《热点资讯》 AI模型部署提速:技术革新与能效优化的双轮驱动目录AI模型部署提速:技术革新与能效优化的双轮驱动 引言:部署瓶颈与提速的紧迫性 一、当前部署提速的成…

美联储遴选“双凯文困境”:用强化学习模拟“哈塞特留任”与“沃什上位”的政策效用最大化路径

摘要:本文通过构建贝叶斯网络模型,结合自然语言处理(NLP)对特政府公开言论的情感极性分析,以及多模态时间序列预测对金融市场反应的量化建模,分析哈塞特留任白宫顾问与沃什竞争美联储主席职位的动态概率分布…

蚂蚁阿福升级PC端,面向医生群体上线 DeepSearch功能

今日,蚂蚁阿福升级其 PC 端,并上线DeepSearch(深度搜索)功能打造中国版“Open Evidence”,免费为医生、医学生及基层医疗工作者等泛医学人士提供专业服务。蚂蚁阿福 PC端提供健康咨询、DeepSearch 两大专业能力&#x…

python redis- hash类型操作

python redis- hash类型操作Posted on 2026-01-20 15:52 pcwanli 阅读(0) 评论(0) 收藏 举报来源:https://cloud.tencent.com/developer/article/1406563 Redis在内存中存储hash类型是以name对应一个字典形式存储…

2026年广东印尼空运专线公司推荐榜:印尼产业落地 /印尼海运专线/ 印尼海外仓 /印尼散货拼箱 /印尼报关服务精选

在全球化贸易背景下,中国与印尼的跨境物流需求持续增长。据印尼海关数据,2025年两国贸易额突破1200亿美元,其中物流环节的时效性与安全性成为企业关注的重点。本文基于行业数据与服务能力,推荐海纳供应链物流(深圳…

ISTA 3A与3B标准解析:医疗器械运输测试的关键意义

一、标准核心内容介绍ISTA 3A与3B均属于国际安全运输协会(ISTA)3系列通用模拟性能测试标准,聚焦包装产品运输防护能力验证,但适用场景与测试要求各有侧重。ISTA 3A标准针对70kg(150lb)及以下的单件包裹运输…

渭南成人街舞培训机构哪家好?Top 3 推荐与深度评测 - 华Sir1

在快节奏的现代生活中,街舞已不仅是青少年的专属,更成为众多成年人释放压力、培养爱好、塑造形体的热门选择。然而,在渭南,面对市场上众多的舞蹈培训机构,成人学员常常面临选择困境:如何找到真正专业、氛围友好、…

2026年AI驱动的知识库部署服务商全景——覆盖企业级BI私有化、Deepseek对接与智能分析一体化方案 - 品牌2025

在数字化转型深化的2026年,企业对知识资产的重视程度达到新高度,知识库作为核心信息枢纽,其部署安全性与实用性成为企业关注焦点。知识库本地化部署凭借数据自主掌控、安全合规性强等优势,成为金融、医疗、政务等敏…

候产房机制指标添加计划

候产房机制指标添加计划 目标 为候产房机制添加 4 个指标: 出生延迟:从第一次进入候产房到创建存在的帧数/毫秒 误产率:出生后在 N 帧内被幽灵清理、或与已存在高度重叠而被合并的比例 漏产率:真实存在持续出现但一直没出生的比例(可用 trackId 或外部标注评估) 重复产…

218_尚硅谷_Go接口课堂练习题

218_尚硅谷_Go接口课堂练习题1.练习题1 2.练习题2 3.练习题3

完整教程:FPGA系统架构设计实践13_FPGA系统功能安全

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

大厂如何做压测?完整方案设计 + 避坑指南

01 为什么要做压测 1、什么是压力测试? 不断向被测对象施加压力,测试系统在压力情况下的表现。 2、压力测试的目的是什么? 测试得出系统的极限性能指标,从而给出合理的承诺值或者容量告警; 找出系统的性能瓶颈&am…

2026年莱姆石漆服务商TOP5推荐:莱姆石涂料、液态莱姆石、莱姆石艺术涂料、仿天然莱姆石、莱姆石高端饰面、洞石漆、洞石涂料及专业施工赋能之选 - 海棠依旧大

随着建筑装饰行业对环保性、美学性及耐久性要求的不断提升,优质仿石涂料与专业施工服务已成为高端建筑外墙、室内装饰的核心需求。浙江作为我国建筑装饰产业活跃区域,仿石涂料市场品类丰富、服务商众多,工程方、装修…

纳斯达克100指数基金

纳斯达克100指数作为全球科技成长股的核心标杆,凭借优质成分股集群、长期稳健收益及强抗风险能力,成为跨市场资产配置的重要标的。其相关基金产品覆盖场内ETF与场外QDII,适配不同投资场景,但“无脑定投”存在显著风险。2026年&…

私有化智能升级正当时:2026企业知识库部署厂商本地BI解决方案先锋榜单 - 品牌2025

在数字化转型进入深水区的2026年,数据已成为企业的核心资产。面对日益复杂的市场环境和内部运营需求,如何安全、高效、自主地挖掘数据价值,成为企业决策者必须回答的战略命题。传统的多系统切换导致的数据孤岛、效率…

JMeter分布式压测实施的核心技术要点

01 背景 在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持4000并发),单台压测机的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能 02 原理 Jmeter分布式测试时,选择其中一台作为调度…

Spring MVC 面试题

Spring MVC 的工作原理是什么组件作用为什么重要DispatcherServlet 前端控制器(所有请求入口) 统一处理请求,避免重复代码HandlerMapping 查找Controller(根据URL) 决定哪个Controller处理请求Controller 处理业务…

2026商用咖啡机选购指南:商务全自动与咖啡全自动商用设备精选 - 品牌2025

在咖啡消费持续升温的市场环境中,商用咖啡机的选择直接影响门店运营效率与出品品质。无论是咖啡连锁、高奢酒店,还是企业办公区、便利店,一款适配场景的商务全自动咖啡机,能有效降低人力成本、保障口感稳定。本文结…

【大数据毕设全套源码+文档】基于Python的动漫影视数据分析和可视化设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…