首页 > 编程语言 >Python的魔法函数

Python的魔法函数

时间:2022-11-24 18:46:23浏览次数:66  
标签:__ 函数 Python self 魔法 len value print def

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,self,魔法,len,value,print,def
From: https://www.cnblogs.com/chf333/p/16922818.html

相关文章

  • #yyds干货盘点#那些地方不能使用箭头函数
    对象方法中,不适用箭头函数下面看一个例子:constobj={name:'张三',getName(){returnthis.name},getName1:()=>{returnthis.name......
  • python,requests高级用法,爬虫代理池,BautifulSoup4介绍
    requests高级用法ssl认证使用代理超时设置异常处理上传文件代理池搭建django后端获取客户端的ip爬取某视频网站爬取新闻BautifulSoup......
  • ubuntu22 安装python3-dev
    使用apt安装python-dev时报错,更换软件源无法解决。首先确定python版本(大版本号,我的是3),然后使用python3-dev代替python-dev。 使用aptitude解决问题:1.安装aptitudesu......
  • 麒麟桌面系统自动化方案 pyautogui+pythonnet
    麒麟系统模拟鼠标的点击、滑动等操作,键盘输入等操作pyautogui的安装见上篇文章可以通过pythonnet封装python脚本,实现点击和输入等操作做到自动化鼠标移动void......
  • python项目2--【数据可视化】之下载数据
    目录python项目2--【数据可视化】之下载数据一、CSV文件格式1.分析CSV文件头2.打印文件头及其位置3.提取并读取数据4.绘制温度图表5.编辑中python项目2--【数据可视......
  • 基于docker搭建Jenkins+git+python+allure
    一、创建jenkins容器1、拉取jenkins镜像dockerpulljenkins/jenkins:latest    2、创建本地目录,后续挂载jenkins的工作目录mkdir/home/jenkins_home3、......
  • Go | 函数注意事项
    细节汇总函数的形参列表可以是多个,返回值列表也可以是多个形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型函数的命名遵循标识符命名规范,首字母不能是......
  • python之路35 MySQL 3 字段的约束条件
    字段约束条件无符号、零填充unsignedidintunsignedzerofillidint(5)zerofill非空createtablet1(idint,namevarchar(16));insert......
  • paddlenlp的tokenizer中的__call__()函数
    目录函数原型函数含义函数原型def__call__(self,text:Union[str,List[str],List[List[str]]],text_pair:Optional[Union[str,......
  • 重学c#系列——委托和匿名函数[二十五]
    前言简单介绍一下什么是委托。正文以前也写过委托,这次算是重新归档,和新的补充吧。https://www.cnblogs.com/aoximin/p/13940125.html有些人说委托是函数指针的包装,也......