搜索

Python的魔法函数 - 无敌小豆包 -


发布时间: 2022-11-24 18:43:00    浏览次数:65 次

1. 什么是魔法函数

  Python的类中有很多内置的魔法函数,他们以__开始和结束,如__init__,__str__等等,它是未来增强类的特性,不需要专门调用,在特定的场合下Python会自己调用,不能自己定义魔法函数

 

2. 常用的魔法函数

   1. 字符串表示
    1. __str__:在print的情况下,可以返回友好的内容显示,python环境下直接运行返回指针地址
    2. __repr__:不管是print或者直接执行,都会返回直接的内容显示
class Label:
    def __init__(self, value='hello world'):
        self.value = value

label = Label()
# 在cmd的python环境下才能输出,在py编辑器无输出
# 但他们都只是指向了一个地址,显然这不是我们想要的结果
lable                     # <__main__.Label at 0x2128207e448>
print(label)             #  <__main__.Label object at 0x000002128207E448> # __str__:面向用户编程,在print下输出内容 class Label:
    def __init__(self, value='hello world'):
        self.value = value

    def __str__(self):
        return self.value

label = Label()   
# __str__只能在print的情况下才能输出具体想要的效果 
label                # <__main__.Label at 0x212827fdcc8>
print(label)         # hello world

# __repr__:面向程序员编程,不管是print还是直接运行的情况下,都能输出内容 class Label:
    def __init__(self, value='hello world'):
        self.value = value

    def __repr__(self):
        return self.value

label = Label()
# 输出结果直观
label                    # hello world
print(label)             # hello world

 

  2. 集合序列相关

    1. __len__: 计算对象容器中元素的个数

class Weekly:
    def __init__(self,my_list):
        self.my_list = my_list

    def __len__(self):
        return len(self.my_list)

weekly = Weekly([1,2,3,4,5])
# 如果没有__len__函数,执行len方法时报错
print(len(weekly))              # 5

 

    2. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

class Weekly:
    def __init__(self,my_list):
        self.my_list = my_list

    def __len__(self):
        return len(self.my_list)

weekly = Weekly([1,2,3,4,5])
# 如果没有__len__,执行len方法时报错
print(len(weekly))              # 5

 

免责声明 Python的魔法函数 - 无敌小豆包 - ,资源类别:文本, 浏览次数:65 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 06:43:00。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/chf333/p/16922818.html