从最初的“Hello World”,走到面向对象。该回过头来看看,教程中是否遗漏了什么。

我们之前提到一句话,"Everything is Object". 那么我们就深入体验一下这句话。

需要先要介绍两个内置函数,dir()和help()

dir()用来查询一个类或者对象所有属性。你可以尝试一下

>>>print dir(list)

help()用来查询的说明文档。你可以尝试一下

>>>print help(list)

(list是Python内置的一个类,对应于我们之前讲解过的列表)


list是一个类

在上面以及看到,表是Python已经定义好的一个类。当我们新建一个表时,比如:

>>>nl = [1,2,5,3,5]

实际上,nl是类list的一个对象。

实验一些list的方法:

>>>print nl.count(5)       # 计数,看总共有多少个5
>>>print nl.index(3)       # 查询 nl 的第一个3的下标
>>>nl.append(6)            # 在 nl 的最后增添一个新元素6
>>>nl.sort()               # 对nl的元素排序
>>>print nl.pop()          # 从nl中去除最后一个元素,并将该元素返回。
>>>nl.remove(2)            # 从nl中去除第一个2
>>>nl.insert(0,9)          # 在下标为0的位置插入9

总之,list是一个类。每个列表都属于该类。

Python补充中有list常用方法的附录。

运算符是特殊方法

使用dir(list)的时候,能看到一个属性,是__add__()。从形式上看是特殊方法(下划线,下划线)。它特殊在哪呢?

这个方法定义了"+"运算符对于list对象的意义,两个list的对象相加时,会进行的操作。

>>>print [1,2,3] + [5,6,9]

运算符,比如+, -, >, <, 以及下标引用[start:end]等等,从根本上都是定义在类内部的方法。

尝试一下

>>>print [1,2,3] - [3,4]

会有错误信息,说明该运算符“-”没有定义。现在我们继承list类,添加对"-"的定义

class superList(list):def __sub__(self, b):a = self[:]     # 这里,self是supeList的对象。由于superList继承于list,它可以利用和list[:]相同的引用方法来表示整个对象。b = b[:]        while len(b) > 0:element_b = b.pop()if element_b in a:a.remove(element_b)return aprint superList([1,2,3]) - superList([3,4])

内置函数len()用来返回list所包含的元素的总数。内置函数__sub__()定义了“-”的操作:从第一个表中去掉第二个表中出现的元素。如果__sub__()已经在父类中定义,你又在子类中定义了,那么子类的对象会参考子类的定义,而不会载入父类的定义。任何其他的属性也是这样。

(教程最后也会给出一个特殊方法的清单)

定义运算符对于复杂的对象非常有用。举例来说,人类有多个属性,比如姓名,年龄和身高。我们可以把人类的比较(>, <, =)定义成只看年龄。这样就可以根据自己的目的,将原本不存在的运算增加在对象上了。


下一步

希望你已经对Python有了一个基本了解。你可能跃跃欲试,要写一些程序练习一下。这会对你很有好处。

但是,Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象。我们已经看到了内置的比如说list,还有tuple等等。它们用起来很方便。在Python的标准库里,还有大量可以用于操作系统互动,Internet开发,多线程,文本处理的对象。而在所有的这些的这些的基础上,又有很多外部的库包,定义了更丰富的对象,比如numpy, tkinter, django等用于科学计算,GUI开发,web开发的库,定义了各种各样的对象。对于一般用户来说,使用这些库,要比自己去从头开始容易得多。我们要开始攀登巨人的肩膀了。

谢谢你的关注,

欢迎来到Python的世界。

总结

len() dir() help()

数据结构list(列表)是一个类。

运算符是方法

list 相加_Python 基础 list类、运算符相关推荐

  1. 命名空间_python基础 13 类命名空间于对象、实例的命名空间,组合方法

    python基础 13 类命名空间于对象.实例的命名空间,组合方法 1.类命名空间于对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两 ...

  2. python 去除str的引号 去除括号_Python基础教程:运算符以及数据类型解析

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...

  3. python数字类型及运算_Python基础教程:运算符以及数据类型解析

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...

  4. python 比较运算符列表_python基础-列表,文件,运算符

    1.变量与赋值 1.1变量 name="xiaofeng"    <==注:等号前面的name是变量:如果等号后面没有加引号,会认为xiaofeng是变量:加引号是字符串. ...

  5. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  6. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

  7. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  8. 重拾Java基础知识:运算符操作

    Java基础知识:运算符操作 前言 优先级 赋值 算术运算符 一元加减运算符 递增和递减 关系运算符 逻辑运算符 短路 位运算符 与(&) 或(|) 异或(^) 反(~) 左移(<< ...

  9. Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】

    Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...

最新文章

  1. 【转】Android source build/envsetup.sh学习笔记
  2. 不出声也能命令Siri!康奈尔大学华人团队开发无声语言识别项链,中文英文都行...
  3. Ubuntu 下载安装删除方式(自己常用,保持更新)
  4. 孙钟秀--《操作系统教程》注释(陈怀临)-- 读书笔记
  5. BZOJ2286 : [Sdoi2011]消耗战
  6. 微信支付 php详解,PHP实现微信支付实战案例详解
  7. SpringBoot2.0 整合 Shiro 框架,实现用户权限管理
  8. JQ中使用FormData+Ajax发送请求及使用express接收处理FormData数据
  9. zabbix mysql 平台_监控平台-zabbix
  10. HDU 6274 Master of Sequence (暴力+下整除)
  11. 使用TryUpdateModel进行数据更新
  12. 区块链零知识证明:Zcash 基础知识普及帖,Zcash 技术分析
  13. 学习:java设计模式—Adapter模式
  14. 聚(N-异丙基丙烯酰胺)PNIPAM离子微凝胶-聚合物后分散形成的纳米粒子-瑞禧
  15. markdown文档插入表情符号支持的英文单词大全 官方
  16. 切边压力机行业调研报告 - 市场现状分析与发展前景预测
  17. 一种新兴计数方式-视觉计数
  18. html视频怎么转换成图片,WPS演示如何将图片转换成视频?
  19. 纳豆红曲的功效与作用是什么?
  20. jcp jsr_JCP EC 2011年特别选举候选人宣布

热门文章

  1. Python通过正则表达式去除(过滤)HTML标签,提取文字
  2. Atitit 纯java项目的提升进度大法---通用json dsl接口
  3. Shell排序(改良的插入排序)
  4. NGUI_2.6.3_系列教程二
  5. UTF8,Unicode 的区别(zt)
  6. SpringCloud工作笔记051---SpringCloud打包部署流程
  7. Android学习笔记---java实现多线程下载器,30_多线程下载原理介绍和使用
  8. linux系统 mysql日志文件太大。造成数据库无法正常启动怎么解决
  9. 无锡 计算机学校排名,无锡中职学校有哪些 前20排名
  10. ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)