python 面向对象进阶之魔术方法

本文介绍了Python中的魔术方法,包括new、上下文管理器、call、str以及算术运算的实现。魔术方法是双下划线开头和结尾的特殊方法,如__init__、__new__,它们在特定情况下自动触发。通过实例解析了new方法在对象创建中的作用,上下文管理器如何实现with语句的自动关闭文件功能,以及如何通过call方法使对象可调用。此外,还探讨了str方法在print和直接输出变量时的不同,以及如何通过魔术方法实现不同类型间的算术运算。
摘要由CSDN通过智能技术生成

前言
相信很多使用 python 的小伙伴都有一个困惑,在看一些库的源码时,发现源码中有很多 XX(双下划线开头,双下划线结尾)的方法。比如我们在定义类时,经常用到的初始化方法 init,在 python 中像 __init __ 这类双下划线开头和结尾的方法,我们把它统称为魔术方法(也有叫魔法方法和特殊方法的)。 今天就专门和大家一起来聊聊 python 中的魔术方法,首先我们来看看魔术方法有哪些特征。

魔术方法的特征:
魔术方法都是双下划线开头,双下划线结尾的方法
魔术方法都是 python 内部事先定义的,是对象相关行为的底层实现方法
魔术方法都是在特定的情况下自动化触发的,一般不会直接去调用。
接下来我们一起看看 python 中场景的一些魔术方法。

1、new 方法
相信大多的程序员,都听说过 new一个对象 这句话(如下图),

在很多的编程语言中创建对象都是使用的 new 来创建的,那么在咱们 python 中呢?其实也有一个 new,它是一个魔术方法,接下来我们一起来看看。

问题:python 创建一个对象的时候,调用的第一个方法是什么?
很多小伙伴会说是 init,其实不然,正确答案是:new 方法

问题:那么这个 new 方法呢,它有什么作用?又在什么时候会调用呢?
案例:
接下来我们一起来看看下面这案例段代码:

c

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值