python编程:魔术方法

Python019

python编程:魔术方法,第1张

首先,你一定用过魔术方法,也一定见过魔术方法。以下划线开头的方法,比如:

这些被统称为魔术方法。

给整数和字符串做加法:

我们写个表示城市的类,它有两个属性:城市名和人口。

然后我们给两个城市做加法,发现不能相加:

报错是说City不支持"+"号,如何让它支持"+"呢?需要给类加上魔术方法__add__就可以相加了。

我们给City添加一个__add__的方法,城市相加,人口相加,创建一个新的城市:

这说明__add__有一定的魔力,当我们用到加号"+"时,python就回去寻找这个方法,如果这个对象没有这个方法就会报错。

python中,所有的运算符都是通过魔术方法来实现的。

如果我们在City类有以下方法,就可以做加减乘除了:

我们再来打印int和str查看他们的方法,int有加减乘除,str只有__add__ __mul__,它只能做加法和乘法:

列表为什么能获取元素, __getitem__,可以再任何一个类里加上这个方法,然后也就可以用[]方括号来获取元素:

我们使用最多的方法一定是__new__和__init__, 在新建方法的时候,都会调用到这两个方法:

不止有魔术方法,还有魔术属性,形如"__yyy__",通常是python自动设置的属性,我们可以使用这些属性,比如:

什么使用str方法,什么时候用repr方法?

如果我们想让print打印出来好看,可以定义__str__的方法:

类是对象的模板,是抽象的。

构造函数 init 是Python魔术方法之一,如图魔术方法

我们通过类模版去创建类的实例对象,然后再调用类定义的功能。

那实例对象的属性是通过什么来初始化的?

这时候Python引入来构造函数 init

构造函数,会在创建实例对象之后Python会自动执行此方法,把初始化的属性特点放到实例对象里。

通过前面的学习,我们知道一个python对象包含三个部分:id(识别码),type(对象类型),value(对象的值)

那么我们进一步深入对象包含的三部分:

我们通过类创建实例对象后,需要定义构造函数 init ()方法。

构造方法用于执行实例对象的初始化工作,即对象创建之后,初始化当前对象的相关的属性,无返回值

构造函数重点

我们通过栗子来学习构造函数的过程

构造函数初始化实例对象过程如下:

1.Animal类会通过默认的 new ()方法为实例对象在堆内存中为开辟一个空间

敲黑板,重点来啦~

拓展:

我们今天学习了构造函数 init (),其在创建对象之后被Python自动调用初始化实例对象属性数据值,无返回值,并且构造函数不能被显示调用。

创建对象时,如果需要,构造函数可以接受参数。当创建没有构造函数的类时,Python会自动创建一个不执行任何操作的默认构造函数。

每个类必须有一个构造函数,即使它只依赖于默认构造函数

好啦,以上是本期内容,欢迎大佬评论区指正~