news 2026/10/5 10:39:39

魔术方法与魔术变量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
魔术方法与魔术变量

一. 魔术方法

魔术方法是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__

  • 作用:获取当前文件的绝对路径
  • 用途:用于文件路径操作和定位
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 16:45:42

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

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

作者头像 李华
网站建设 2026/10/4 1:55:21

Unity3D 神秘卡牌游戏

基于 Unity3D 引擎开发了一款神秘主题的卡牌游戏。游戏共设有三个关卡,卡牌数量随着关卡推进逐步增加。玩家在每次操作中最多只能翻开两张卡牌:若两张卡牌图案相同,则卡牌同时消失;若不相同,则会自动翻回背面。当场景中…

作者头像 李华
网站建设 2026/10/3 1:37:40

救命神器8个AI论文网站,研究生轻松搞定毕业论文!

救命神器8个AI论文网站,研究生轻松搞定毕业论文! 论文写作的救星,AI 工具如何改变研究生的学习方式 在当今学术研究日益复杂的背景下,研究生们正面临着前所未有的挑战。从选题到开题,从撰写初稿到反复修改,…

作者头像 李华
网站建设 2026/10/3 23:45:39

导师推荐10个AI论文平台,自考毕业论文轻松搞定!

导师推荐10个AI论文平台,自考毕业论文轻松搞定! AI 工具助力论文写作,轻松应对自考挑战 在自考论文写作过程中,许多学生常常面临选题困难、结构混乱、内容重复等问题。而随着 AI 技术的不断发展,越来越多的 AI 工具开始…

作者头像 李华
网站建设 2026/10/3 5:02:15

PHP性能优化全攻略

PHP 性能优化方法 代码层面优化 避免使用过多循环和嵌套,尽量使用内置函数(如 array_map 替代 foreach)。减少全局变量和魔术方法(如 __get、__set)的使用。使用 代替 进行严格比较以减少类型转换开销。 缓存技术应…

作者头像 李华
网站建设 2026/10/4 12:14:53

FBM242-P0916JY外置开关模块

FBM242-P0916JY 外置开关模块特点概览:模块化设计:标准化接口,便于安装、扩展和替换。多通道输入:支持多路开关信号输入,实现灵活控制。工业级可靠性:耐高温、防尘、防振动,适应连续运行的工业环…

作者头像 李华