Python魔法方法探秘 | 非常通俗易懂

本文详细介绍了Python中的三个重要魔法方法:__init__用于对象初始化,添加属性;__str__用于自定义打印对象时的输出信息;__del__则在对象销毁时自动调用,可用于资源清理。通过示例代码展示了这些方法的使用和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:

  • 知道__init__方法的作用和特点

  • 知道如何定义不带参数和带参数的__init__方法

  • 知道__str__方法的作用

  • 知道对象销毁时会自动调用__del__方法

魔法方法

在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method ,中文称 魔法方法。

魔法方法是系统提供好的方法名字,用户需重新实现它。

魔法方法一般情况下无需手动调用,在合适时候自动会调用。

魔法方法:init()

init()基本使用

init()方法叫做 对象的初始化方法,在 创建一个对象后会被自动调用,不需要手动调用

init()方法的作用:添加属性

示例代码:

"""
**__init__方法:**
    1. 作用:添加属性
    2. 特点:创建对象的时候,实例化对象,自动调用__init__方法
"""

class Dog(object):
    def __init__(self):
        """初始化函数,添加属性"""
        self.type = '大黄狗'
        print('init方法调用了')

    def print_info(self):
        """打印实例属性"""
        print(self.type)

# 1. 创建对象,实例化对象,自动调用__init__方法
# 2. 尽管是自动调用方法,也是dog1自动调用方法,所以,self就是dog1
dog1 = Dog()

# 手动调用实例方法
dog1.print_info()

运行结果:

init方法调用了
大黄狗

init()自定义参数

  • init(self)除了默认参数self,还可以设置任意个数的自定义参数,例如:

init(self,x,y,z)

  • init方法 设置的自定义参数必须和创建对象时传递的参数保持一致,例如:

对象变量名 = 类名(x,y,z)

  • 开发者可以 设置自定义参数,为对象的默认属性提供 不同的初始值

示例代码:

class Dog(object):
    def __init__(self, _type):
        """初始化函数,添加属性"""
        self.type = _type
        print('init方法调用了')

    def print_info(self):
        """打印实例属性"""
        print(self.type)
# 创建对象,实例化对象,自动调用__init__方法
# '旺财'传递给 _type 形参
dog1 = Dog('旺财')
# 直接调用方法
dog1.print_info()

print('='*30)
dog2 = Dog('来福')
dog2.print_info()

运行结果:

init方法调用了
旺财
==============================
init方法调用了
来福

魔法方法:str()

str()方法的使用

  • 如果直接 print 打印对象,会看到创建出来的对象在内存中的地址
  • 当使用print(对象变量名)输出对象的时候,只要类中定义了__str__()方法,就会打印__str__()方法返回值
  • str()方法作用主要返回对象属性信息,print(对象变量名) 输出对象时直接输出__str__()方法返回的描述信息
  • str()方法的返回值必须是 字符串类型

示例代码:

"""
__str__方法:
    1. 返回值必须是字符串类型
    2. print(对象变量名)  对象变量名的位置替换为__str__()方法返回值的内容
"""

class Dog(object):
    # 添加属性,type, age
    def __init__(self, _type, _age):
        self.type = _type
        self.age = _age

    # 测试有定义 __str__ 方法,和没有定义,print(对象)的区别
    def __str__(self):
        return "类型:%s, 年龄:%d" % (self.type, self.age)

# 创建对象
dog1 = Dog('大白狗', 3)

# 如果有__str__ 方法,dog1的位置替换为__str__()方法返回值的内容
print(dog1)
print('对象描述信息为:', dog1)

运行结果:

类型:大白狗, 年龄:3
对象描述信息为:类型:大白狗, 年龄:3

魔法方法:del()

del()方法的使用

  • 在对象的生命周期结束(对象销毁)时, del()方法会自动被调用,做一些清理工作
class Dog(object):
    def __del__(self):
        print('我悄悄地离开了')

# 设计一个函数,在函数内容创建对象
# 函数调用完毕,里面创建的对象,生命周期结束,自动调用__del__方法
def func():
    dog1 = Dog()

print('函数调用前')
# 调用函数
func()
print('函数调用后')

运行结果:

函数调用前
我悄悄地离开了
函数调用后

小结

1. __init__方法的作用和特点

作用:添加属性

特点:创建对象的时候,实例化对象,自动调用__init__方法

2. 不带参数和带参数的__init__方法的使用

# 不带参数
class 类名(object):
    def __init__(self):
        pass

# 实例化对象
对象名 = 类名()

# 带参数
class 类名(object):
    def __init__(self, 形参1, 形参2 ……):
        pass

# 实例化对象
对象名 = 类名(实参1, 实参2,……)

3. __str__方法的作用:
主要返回对象属性信息,print(对象变量名)输出对象时直接输出__str__()方法返回的描述信息,str()方法的返回值必须是 字符串类型。

4. 对象销毁时会自动调用__del__方法

python学习

学Python的伙伴,欢迎加入新的交流【君羊】:905229245
一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值