美文网首页python小白联盟
python面向对象编程(5)|类内置方法

python面向对象编程(5)|类内置方法

作者: 雨路浅歌 | 来源:发表于2018-07-20 18:07 被阅读5次

今天我们来学习几个类内置方法,分别是:

__str__

__repr__

__call__

__setitem__

__getitem__

__delitem__

__eq__

​ 可能大家对类内置方法并不熟悉,但是其实我们在以前就已经用过它了,比如经常使用到的__init__就是其中的一个,它叫做构造方法,用来创建对象的各种属性。下面我们一起来学习其它的几个类内置方法。

__str__

​ 看到名字大家就应该想到了,这是要给和字符串相关的类内置方法,下面我们来看它的应用。

​ 我们先来创建一个人类,实例化出一个名字为张三,年龄为18岁的对象,然后把名字和年龄打印出来。

​ 然后我们就想了,有没有一种方法可以通过打印实例化对象就把名字和年龄打印出来呢?这个我们先不用管,我们先来看看直接打印实例化对象会输出什么。

​ 输出结果的大概意思就是类名和其所在的内存地址,这个显然不是我们想要的结果,这个是面向开发者的,为了使用户能够清楚地看到输出的信息。于是乎python就有了__str__这个类内置方法,而这个方法返回的结果才是格式化后的面共用户的信息。看下面的例子

这个结果就友好多了。

__repr__

​ 上面我们已经说过了,__str__面向的是用户,而__repr__则和__str__相反,它面向的是开发者,用于调试。看例子

可以看到,执行的是方法__str__

我们把__str__方法注释掉,看看会发生什么

可以看到,现在执行的是__repr__方法,也就是说,__str__方法的执行顺序是排在__repr__前面的。

__call__

简单地说,__call__方法可以让我们像调用方法一样调用实例化对象。

可以看到,执行的是__call__方法。我们把__call__方法注释掉,看看会发生什么?

看报错原因,知道为什么函数名叫__call__了吧。当然,既然是函数,那么我们就可以传递参数

__setitem__

__getitem__

__delitem__

这三个可以归为一类,所以就放在一起讲了。这三种方法可以让我们像操控列表一样来操控实例。

接着我们给类添加一个字典,再来看看代码演示

可以看到,赋值、获取、删除这三个方法都已经成功执行

看完了索引,我们再来看看切片

注意看红框部分,它其实是Slice类的实例,而很容易想到0,5,3分别是开始,结束和步长。从上面的例子可以看到,切片操作也已经完成,上面只有赋值操作,获取和删除操作也是同一个道理,读者们可自行敲代码操作一下。

__eq__

eq是equal的缩写,比较的是两个实例化对象是否相等

当出现两个实例化对象相等的语句时,就会执行__eq__方法,self是p1,other是p2。

当然,有相等,自然就有不等,大于,小于,大于等于,小于等于,它们对于的方法分别是__ne____gt____lt____ge____le__,道理和相等的用法是一样的,读者们举一反三即可。不过,有一点大家需要注意,如果类中没有想要的方法,则会自动去查找该方法的反方法并进行参数调换,比如不等的反方法是相等,小于的反方法是大于。举个简单的例子

把p1<p2改为p1>p2之后,注意p1<p2的对立面不是p1>=p2

由于类中没有定义大于方法,则执行小于方法并进行参数调换,也就是说现在self是p2,other是p1。

除了上面介绍的类内置方法之外,还有很多其它的方法,就不在这里一一列举了,蛇友们可以自行查阅资料学习。

python小白联盟

相关文章

  • python面向对象编程(5)|类内置方法

    今天我们来学习几个类内置方法,分别是: __str__ __repr__ __call__ __setitem__...

  • python 面向对象

    python 面向对象 self代表类的实例,而非类 Python内置类属性 类方法 list、dict 等都成为...

  • Python学习笔记5

    面向对象 类和对象的创建 属相相关 方法相关 元类 内置的特殊属性 内置的特殊方法 面向对象 类和对象的创建 类 ...

  • python 面向对象的编程(一)

    python 同时支持面向对象编程和函数式编程的语言python面向对象的主题围绕 类 和 类实例 两个主题。面向...

  • Python全栈之路系列之面向对象基础

    面向对象基本介绍 Python编程方式: 面向过程编程 面向函数编程 面向对象编程 名称定义: 如果函数没有在类中...

  • pyqt5教程(二)一个简单的应用图标

    一、面向对象编程 PyQt5编程意味着就是面向对象的编程。在面向对象编程中有三个重要的东西,分别是类,数据和方法,...

  • python基础知识(四)---面向对面编程

    python 面向对面编程 面向对象编程(或者可以称为 面向类编程)。 面向对象 提供的是一种 "语法功能", ...

  • python 面向对象编程

    面向对象编程 万物皆是对象,Python当然支持面向对象编程。类和对象是面向对象编程的两个主要方面,类创建一个新的...

  • Python 面向对象2

    面向对象编程2 1 内置的类属性 内置类属性:python中每个类都拥有内置的类属性 举例说明: 2属性私有化 p...

  • Python的静态方法和类方法

    Python面向对象编程中,类中定义的方法可以是 @classmethod 装饰的类方法,也可以是 @static...

网友评论

    本文标题:python面向对象编程(5)|类内置方法

    本文链接:https://www.haomeiwen.com/subject/oebqmftx.html