学习笔记-面向对象2(魔法方法)

本文详细介绍了Python中的五个关键魔法方法:init用于初始化对象,带参数的init解决了属性不可变问题,str魔法方法定制了对象打印输出,del在对象删除时执行,call使得对象可调用。通过这些魔法方法,可以更好地理解和控制对象的生命周期及行为。
摘要由CSDN通过智能技术生成

五、魔法方法

在python中, _ _xxx _ _()这样的方法就叫做魔法方法,指的是具有特殊功能的函数,在特定的场景下有特定的作用,在特定的场景下或出发特定的功能。

1、init魔法方法

详见上节。

2、带参数的init魔法方法

该方法可以解决属性不能改动的问题;即在定义该方法的时候传入所需要的形参,在创建对象的时候传入实参。

举例:

class Dog:
    def __init__(self, name, color, age):
        self.dog_name = name
        self.dog_color = color
        self.dog_age = age

    def print_info(self):
        print(f'狗狗的名字:{self.dog_name}\n'
              f'颜色:{self.dog_color}\n'
              f'年龄:{self.dog_age}')


dog = Dog('豆子', '白色', '2')
dog.print_info()

3、str魔法方法

当print输出一个对象的时候,默认打印出对象的内存空间地址;如果在类中定义了str魔法方法之后,再打印对象时,就打印的str这个魔法方法的返回值。即定义str魔法方法时,必须要有一个返回值,该返回值是对类的说明、描述、状态等。

举例:

class Dog:
    def __init__(self):
        print('汪!汪!汪!')
        
    def __str__(self):
        """Dog类的描述"""
        return '狗属于脊索动物门、脊椎动物亚门...'
    
    
dog = Dog()
print(dog)
# 汪!汪!汪!
# 狗属于脊索动物门、脊椎动物亚门...

4、del魔法方法

当删除一个对象的时候,python解释器就会自动调用del魔法方法。即先执行对象,对象执行结束之后就将对象自动删除掉。

举例:

class Dog:
    def __init__(self):
        print('汪!汪!汪!')

    def __del__(self):
        """删除对象"""
        print(f'对象{self}已经删除!')


douzi = Dog()
print(douzi)
# 汪!汪!汪!
# <__main__.Dog object at 0x0000025428ED92B0>
# 对象<__main__.Dog object at 0x0000025428ED92B0>已经删除!

5、call魔法方法

当一个类中实现了call魔法方法之后,那么这个类创建的实例对象就是一个可调用对象,当调用这个实例对象的时候,默认执行call魔法方法下面的代码。

举例:

class Dog(object):
    def __init__(self):
        self.name = '豆子'

    def __call__(self, *args, **kwargs):
        print('这是个call魔法方法')


douzi = Dog()
# 调用对象,默认执行call魔法方法下的代码
douzi()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值