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

您所在的位置:网站首页 魔法指的是什么 一文读懂什么是Python魔法函数

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

2024-07-11 19:28:28| 来源: 网络整理| 查看: 265

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

Python的魔法函数是指Python的类中,一系列函数名由双下划线包裹的函数。

笔者最初接触到魔法函数的使用是在Pytorch中,在Pytorch中的Dataset类中有这样的用法:

image-20210904114042487

除了常见的__init__构造函数外,还有__getitem__和__len__函数。在之后的代码中,笔者并没有看到__getitem__和__len__函数的显示调用。那么这样的声明与定义有什么意义?

首先定义一个空类,并用dir方法获取类中的所有方法(一个空类真的是空空如也吗?)

class Foo: pass print(dir(Foo))

结果:

['__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__']

我们可以看到许多默认的方法。比如每一个类都有一个默认的__init__方法作为其构造函数。而如果想定义自己的构造函数,就需要显式地对构造函数进行定义。

下面结合实例来说明一些魔法函数的用处。

基本

__new__(cls[,args…])

一个对象实例化的时候所调用的第一个方法。

__init__(self[, args…])

默认的构造函数,用于类的初始化。

注:__init__和__new__的区别:

在一般情况下,我们在构造类时调用的是__init__,但实际上第一个被调用的方法是__new__。以下代码为证:

class Bar: def __new__(cls, num): print("use __new__ method") return super(Bar, cls).__new__(cls) def __init__(self, num): print("use __init__ method") self.num = num bar = Bar(1)

结果为:

use __new__ method use __init__ method

一般情况下,我们放心使用__init__方法进行对象的构造即可,只需大致理解__new__和__init__的区别即可:

__new__:创建对象时调用,会返回当前对象的一个实例

__init__:创建完对象后调用,对当前对象的一些实例初始化,无返回值

__str__(self)

定义使用print()时的行为。

__repr__(self)

与str方法类似,但更面向开发者。如果一个类同时定义str()和repr(),那么会优先使用str()。

注:str和repr的返回值必须为str

__call__(self[, args…])

像函数一样调用类的实例。可以接参数。

__get__(self)

定义用对象为其他成员赋值的行为。

__set__(self[,args…])

定义为其他数据类型为对象赋值时的行为。

__del__(self)

默认的析构函数。

代码实例:



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭