一、python下划线函数??什么是魔法函数?魔法函数能干啥用???

本文详细介绍了Python中的魔法函数,如__init__、__getitem__和__str__,__repr__等,展示了它们在类定义中的作用,以及如何通过这些函数实现迭代、字符串格式化和元类操作。

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

1、什么是魔法函数??

大概的理解 :以双下划线开头并以双下划线结尾的函数

首先,让我们一起来举个例子:

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

    def __getitem__(self, item):  # 使Company可迭代
        return self.employee[item]


company = Company(["zhang", "jia", "liu"])

for e in company:
    print(e)

在Company中我们就使用了两个魔法函数,其中__init__函数是最常见的哦,它是用来给类初始化用的,__getitem__是使函数可迭代的一个手段,有了它我们的类可以被for循环。
运行结果:

zhang
jia
liu

进程已结束,退出代码0

2、有哪些魔法函数?究竟有哪些种类的魔法函数呢??(分类)
字符串表示的魔法函数:

 1. __repr__   # 开发模式下调用,与类的继承无关,可以在任意类中使
 2. __str__   # 对字符串格式化时使用

# __str__ 

In [5]:
class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list
    
    def __str__(self):
        return ",".join(self.employee)
company = Company(["zhang", "jia", "liu"])print(company)
​Out[5]:
zhang,jia,liu

# __repr__
class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list
    
    def __str__(self):
        return ",".join(self.employee)
    
    def __repr__(self):
        return ",".join(self.employee)
company = Company(["zhang", "jia", "liu"])

company 

zhang,jia,liu

其实还有很多很多的魔法函数,比如下边这堆:
  1. 集合、序列相关:
 3. __len__
 4. __getitem__
 5. __setitem__
 6. __delitem__
 7. __contains__
  1. 迭代相关:
 8. __iter__
 9. __next__  
a= iter('dfdfd')  #将字符串变成一个可迭代对象,放到变量a中

print(a.__next__()) # 每调用一次输出一个字符串
print(a.__next__())

print(next(a))  # next(a) == a.__next__() 得到的结果是一样的,因为执行next()函数底层调用的就是__next__ 
  1. 可调用:
 10. __call__

with上下文管理:

 11. __enter__
 12.__exit__ 

数值转换:

 12. __abs__
 13. __bool__
 14. __int__
 15. __float__
 16. __hash__
 17. __index__

元类相关:

 18. __new__
 19. __init__

属性相关:

20. __getattr__、__setattr__
21. __getattribute__、__setattribute__
22. __dir__

属性描述符:

23. __get__、__set__、__delete__

协成:

24. __await__、__aiter__、__anext__、__aenter__、__aexit__
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老糊涂Lion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值