什么是魔法函数?记一次“产脸”后的总结

魔法函数 1.魔法函数 以双下划线开头双下划线结尾。有python提供的。 可以写到任何自定义的类中,不需用去手动调用,Python解释器内部会自己调用魔法函数。 举个例子: 2.python的数据模型以及数据模型对python的影响 实际上魔法函数是python本身数据模型的一个概念,如当我们在类中实现 __ getitem __()的时候,可以实现对类的实例化对象的直接遍历。所以魔法函数实际上会影响P... 阅读详情

XX:“你觉得你Python掌握程度如何?了解,熟悉,还是精通”。 我: “我觉得我自动化测试和工具开发应用的还不少,应该算熟悉吧”。
XX:”那你给我讲讲什么是魔法函数?”
我:“…………………………….(感觉像吃了陀翔般难受,明明知道肯定是用过,硬是像不起什么它的概念,脸产的啪啪响)”

是的,魔法函数,每天都在用,只要写Python代码就会用:

class Test(object):
    def __init__(self):
        pass

是的只要定义一个类,需要再实例创建时对它进行初始化就需要定义init函数,而init函数正式所谓的魔法函数。
其实魔法函数就是Python类中具有特定功能的内置函数。我在使用的时候常常将其重载来实现或扩展新的功能(体现的是面向中通过重载来实现多态的思想),比如,上述 Test类在定义时,就是重载了基类object的init方法。

一个类内置的的魔法方法,远不只有init这一个,我们调用dir接口,就能看到一个Python类还提供了如下这些魔法函数:

print(dir(Test))

#打印结果:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

(还有一些并不能通过dir打印出来,但在IDE做联想的时候可以选择…为什么呢?还没弄明白)

那么关于Python默认功能,操作,运算符大多要基于这些魔法参数实现,比如:
这里写图片描述

那么,只要重载Python所提供功能所对应的魔法函数就可以改变/扩展Python所提供的默认的能力(比如运算符)例:

class INT_NUM(int):
    def __init__(self, num):
        self.num = num

    # 重载 == 符号的实现,整数位数的比较
    def __eq__(self, other):
        return len(str(self.num)) == len(str(other.num))


print(INT_NUM(1) == INT_NUM(2))

#打印结果为True

是不是有点像C++里面运算符重载的意味?

php魔法函数 发现在ctf中,关于PHP几大魔法函数的考点还是很多的,也是很基础的,也有很多的安全问题也是这些魔法函数造成的,简单记录一下关于魔法函数的理解以及在发现安全过程中遇到后怎么进行绕过。    1、__wakeup() __wakeup()是在反序列化操作中起作用的魔法函数,当unserialize的时候,会检查时候存在__wakeup()函数,如果存在的话,会优先调用__wakeup()函数。... 阅读详情

相关推荐

【专题】谈谈python中的“魔法函数“

python中常用的魔法函数__init()____str__()__new()____unicode__()__call__()__len__()__repr__()__setattr__()__getattr__()__setitem__()__getitem__()__delattr__()__delitem__()__iter__()__del__() init() 所有类的超类object,默认包含__init__()实现,这个函数会在对象初始化的时候调用,我们可以选择实现,也可以选择不实现,一般

qq_36581961的博客 796

Python学习:魔法函数

以双下划线开始,双下滑线结尾。魔法函数是为了增强一个类的特性。 魔法函数可以随意定义某个类的特性,这些方法在进行特定的操作时会自动被调用。

Python热爱者的博客 4692

Python魔法函数详解

魔法函数是封装在类中的一种特殊的函数,在某些特定的功能下可以隐式地调用。Python中的魔法函数以双下划线开头并结束,比如在初学面向对象时,用于初始化的【__init__】就是一个魔法函数。

微小冷的学习笔记 1916

python中魔法函数用法总结

python中魔法函数用法总结

IT之一小佬的博客 2922

SQLSTATE58030

在优化一条SQL的时候遇到了执行错误 gtlions =# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions -# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a

Gtlions Tracker 3658

统一大型语言模型和知识图谱:路线图

大型语言模型(LLM),如ChatGPT和GPT4,由于其涌现能力和泛化性,正在自然语言处理和人工智能领域掀起新的浪潮。然而,LLM是黑箱模型,通常无法捕捉和获取事实知识。相反,知识图谱(KGs),例如维基百科和华普,是显式存储丰富事实知识的结构化知识模型。KGs可以通过为推理和可解释性提供外部知识来增强LLM。同时,KGs很难从本质上构建和演化,这对KGs中现有的生成新事实和表示未知知识的方法提出了挑战。因此,将LLM和KGs统一在一起并同时利用它们的优势是相辅相成的。

qq_32907491的博客 2841

(Python高级编程)第二章:Python中的魔法函数

魔法函数:在Python中,魔法函数是以__开头和结尾的函数,例如下面Python中会内置很多的魔法函数魔法函数是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊方法中。我们经常使用的构造函数__init__和析构函数__del__就属于魔法函数。

快乐江湖的博客 1970

9 HAL库驱动框架简述(STM32HAL库)

HAL库外设的使用步骤总结如下:1、定义并填充xxx外设句柄结构体。2、如果遵循HAL库规范,通过HAL_xxx_MspInit()函数,实现外设底层资源的初始化,包括但不限于GPIO、时钟、DMA、中断等资源的初始化。3、调用HAL库的对应外设初始化函数,形如:HAL_xxx_Init()。4、初始化完成,开始使用外设。5、使用方法具体查看对应外设的HAL库驱动包中的说明:补充:HAL库使用主线外设初始化外设使用。

qq_25218501的博客 1977

【Python】魔法函数

魔法函数简介

好记性不如烂笔头 2314

无人机飞控传感器全解析:从IMU到光流传感器的实战应用

本文深入解析了无人机飞控系统的核心传感器,从IMU、气压计、磁力计到光流传感器,详细阐述了其工作原理、数据融合策略及常见挑战。结合ICF5、Pixhawk 6C等主流飞控硬件,提供了从传感器校准、滤波器调优到应对室内光流定位、强磁干扰等实战场景的系统性优化指南,帮助开发者突破飞控“黑箱”,实现更稳定、可靠的飞行控制。

weixin_28396629的博客 165

Dify 深度进阶:从入门到精通AI应用构建

《Dify进阶指南:从基础到高阶的AI应用开发技巧》 本文深入探讨Dify平台的高级功能与应用开发技巧。首先强调核心概念的深化,包括提示词工程进阶、知识库高效管理和模型参数优化。重点介绍智能体应用的开发方法,如何让AI具备自主规划与执行能力。同时讲解工作流编排、前端集成等实用技术,并分享应用运营优化、成本控制等实践经验。文章还展望了Dify生态的发展趋势,为开发者提供从基础到进阶的完整学习路径,助力打造更智能高效的AI应用。

同名公众号:dify实验室 1949

python 魔法函数

Python魔法函数

Fantastic 5467

Ubuntu桌面消失?可能是lightdm配置在捣鬼:详细解析/etc/lightdm.conf的优先级机制与实战修复

本文详细解析了Ubuntu系统因lightdm显示管理器配置错误导致桌面消失的问题。通过分析/etc/lightdm.conf的优先级加载机制,提供了从systemctl诊断、调试模式运行到实战修复配置语法错误(如缺失[Seat:*]组)的完整方案。文章还探讨了在系统无法启动时使用chroot或恢复模式进行高级救援,并对比了lightdm与gdm3在NVIDIA驱动环境下的不同表现,帮助用户高效恢复图形界面。

weixin_29313547的博客 420

Python 中的魔法函数和魔法属性

Python 中的魔法函数,也被称为特殊方法或双下划线方法,是 Python 中一些特殊命名的函数,它们以双下划线开头和结尾。这些函数定义了对象在特定情况下的行为,例如创建、比较、运算、迭代等。魔法函数主要是为某些特殊需求而设计的。例如__str__() 和__repr__() 函数用于打印输出对象的信息,__add__() 函数用于定义两个对象相加的行为,__len__() 函数定义当被 len() 调用时的行为等。

Looking的网页备忘录和个人知识库 1152

别再混淆了!深入浅出图解四元数姿态控制中的‘误差四元数’(附四种定义对比与仿真)

本文深入解析四元数姿态控制中的误差四元数定义差异,对比四种常见定义(如Q₀∘Q⁻¹与Q⁻¹∘Q₀)及其对PD控制性能的影响。通过刚体动力学仿真验证,揭示定义二(Q⁻¹∘Q₀)在无人机和航天器控制中的最优性能,提供工程实践建议与参数整定技巧,帮助开发者避免常见陷阱并提升控制效率。

weixin_42528191的博客 277

Windows 11 安装 uv:手动下载、配置国内源

本教程详细介绍了在 Windows 11 系统下安装并配置 Python 包管理器 uv 的完整流程,包括配置环境变量 PATH、设置清华 PyPI 镜像源,以及创建收据文件以支持未来更新。适用于因网络限制无法通过官方脚本自动安装的用户,操作步骤清晰,配有图文指引,帮助读者高效完成本地部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 7597

python魔法函数

一、魔法函数使用举例 Python中这个__repr__函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串.如果我们直接打印一个类,向下面这样 class A(): def __init__(self,name=None,id=1): self.id=id self.name=name if __name__ == '__main__': a=A() print(a) 输出结果: <__main__.A object at 0x...

sanmi8276的博客 1876

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python-魔法函数

所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数(函数名格式一般为__xx__),并绑定到类的特殊方法中。比如在类A中自定义__str__()函数,则在调用str(A())时,会自动调用__str__()函数,并返回相应的结果。在我们平时的使用中,可能经常使用__init__函数(构造函数)和__del__函数(析构函数),其实这也是魔法函数的一种。Python中以双下划线(xx)开始和结束的函数(不可自己定义)为魔法函数。......

qq_15821487的博客 1210

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Jupyter Notebook魔法函数

魔法函数 使用魔法函数可以简单的实现一些单纯python要很麻烦才能实现的功能。 符号 功能 %: 行魔法函数,只对本行代码生效。 %%: Cell魔法函数,在整个Cell中生效,必须放于Cell首行。 %lsmagic: 列出所有的魔法函数 %magic 查看各个魔法函数的说明 ? 后面加上魔法函数名称,可以查看该函数的说明 一些常...

南风有翼的博客 1989

Python:魔法函数

Python 的魔法函数,又称为特殊方法,是 Python 类中定义的一组特殊的方法,具有一些独特的特性和用途。这些方法以双下划线(__这些魔法方法允许自定义类更加灵活和强大,使它们的行为更接近Python的内置类型,如字符串、列表等。魔法函数不是显式调用的,而是在特定的语境下由 Python 解释器隐式自动调用。它们的触发通常与 Python 中的某些内置行为或操作相对应。)开头和结尾,它们在 Python 编程中扮演着特殊角色。"这是一个示例对象"

极光喵的博客 1065

Jupyter中的魔法函数

Jupyter的魅力之处,除了体现在能提供丰富多彩的格式化文本显示,还体现在它提供了很多好用的函数。这些函数如同有魔力一般,故也被称为魔法函数(Magic Function)。所谓魔法函数,实际上是IPython预先定义好的具备特定功能的函数被放到Jupyter中使用罢了。 请注意,这是IPython特有的函数,并非Python的内置函数,因此脱离IPython的使用环境(如使用Pycharm或Python自带的IDLE开发环境等),这些函数是无法被解析运行的。 在图1-22中,第14行和第16行就分别

玉来愈宏的随笔 5888

第二章:Python中的魔法函数

魔法函数是 Python 类的一部分,这些函数通过特殊的命名约定来实现特定的行为。常见的魔法函数包括__init__(构造函数)、__str__(字符串表示)、__len__(长度)、__add__(加法运算符)等。它们通常用于定义对象的行为,如对象创建、字符串表示、算术运算等。

深度学习客 1656

一文读懂什么是Python魔法函数

一文读懂什么是Python魔法函数 Python的魔法函数是指Python的类中,一系列函数名由双下划线包裹的函数。 笔者最初接触到魔法函数的使用是在Pytorch中,在Pytorch中的Dataset类中有这样的用法: 除了常见的__init__构造函数外,还有__getitem__和__len__函数。在之后的代码中,笔者并没有看到__getitem__和__len__函数的显示调用。那么这样的声明与定义有什么意义? 首先定义一个空类,并用dir方法获取类中的所有方法(一个空类真的是空空如也吗?) c

m0_51908955的博客 2876

Python中的魔法函数

大家好,Python作为一种高级编程语言,以其简洁、优雅和易读性而闻名。然而,Python的强大之处不仅仅在于其语法的简洁性,还在于其灵活的面向对象编程范式。在Python中,有一类特殊的方法被称为“魔法函数”,它们以双下划线(__)开头和结尾,为Python提供了一种强大的机制,使得用户能够定制类的行为,使其更加符合特定的需求和使用场景。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 2077

python内置函数和魔法函数

内置方法:Python中声明每一个类系统都会加上一些默认内置方法,提供给系统调用该类的对象时使用。比如需要实例化一个对象时,需要调用该类的init方法;使用print去打印一个类时,其实调用的是str方法等等。 init(self, …):初始化对象class,在创建新对象时调用。在方法里,可以初始化该对象的属性,否则调用其他时可能出“现has no attribute”错误; del(sel...

IAlexanderI的专栏 957

python的魔法函数_python入门系列:魔法函数

引言魔法函数是Python中定义的,以__开头,__结尾,形如__fun__()的函数,一般使用已经定义好了的即可。使用这样一些函数,可以让我们自定义的类有更加强大的特性。魔法函数一般是隐式调用的,不需要我们显示调用。class Language(object):def __init__(self, language_list):self.lans = language_list# 如果要遍历所有...

weixin_39621178的博客 138
上一篇: “模板方法”模式与Python装饰器的关系
下一篇: 加密算法学习总结---凯撒密码
牛屁哄哄叫兽
博客等级 码龄18年 56粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值