魔术方法与魔术变量

一. 魔术方法

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

常见魔术方法

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

示例:

python 复制代码
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() 方法(初始化方法或构造方法)

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

python 复制代码
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__方法返回 字符串类型 的数据)

python 复制代码
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() 方法。

python 复制代码
class Dog():
    def __init__(self):
        print('构造函数')

    def show(self):
        print('自定义函数')

    def __del__(self):            # 析构方法 __del__
        print('析构函数')

    def __str__(self):
        return "是的"

二. 魔术变量

1.name

name :判断当前文件中的函数或者其他功能的函数实在本地调用还是在外部调用

如果在本地调用但会的结果为__main__,如果在外部通过导入的方式进行调用则返回的结果为当前文件名

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

2.file

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

使用示例:

python 复制代码
# 获取当前文件路径
print(__file__)

三. 总结

3.1 魔法方法

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

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

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

3.2 魔法变量

1.name

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

2.file

  • 作用:获取当前文件的绝对路径
  • 用途:用于文件路径操作和定位
相关推荐
wuhen_n4 小时前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
AIFarmer4 小时前
在EV3上运行Python语言——无线编程
python·ev3
不会代码的小测试4 小时前
UI自动化-POM封装
开发语言·python·selenium·自动化
2401_841495644 小时前
【LeetCode刷题】二叉树的层序遍历
数据结构·python·算法·leetcode·二叉树··队列
roman_日积跬步-终至千里4 小时前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
lsx2024064 小时前
C++ 基本的输入输出
开发语言
ZH15455891314 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
B站计算机毕业设计超人4 小时前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
B站计算机毕业设计超人4 小时前
计算机毕业设计hadoop+spark+hive交通拥堵预测 交通流量预测 智慧城市交通大数据 交通客流量分析(源码+LW文档+PPT+讲解视频)
大数据·hive·hadoop·python·spark·毕业设计·课程设计
CodeSheep程序羊4 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展