从最初的“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. 网络推广方法教大家提升网站页面收录的技巧!
  2. byte转换int时为何与0xff进行与运算
  3. cocos2d-x知识总结
  4. java timezone_Java TimeZone useDaylightTime()方法与示例
  5. Android图片压缩,不失真,上线项目
  6. 测试人生 | 三十而已,何需惧怕 年薪40W+涨薪幅度超40%
  7. kotlin数据类_Kotlin数据类
  8. c++ 程序员成长书单
  9. Python基础教学3:变量名和赋值
  10. 限制input 输入框只能输入数字
  11. 仿网易云音乐 web 版 vue-163-music
  12. ospf路由器连接物理网络的方式 以及ospf与IGRP对比(补充)
  13. 小程序开发之组件video(视频)
  14. 汇编语言程序设计实验——字符统计
  15. 又是一年1024(2019)
  16. Python中读取,显示,保存图片的方法
  17. 免费的中英文翻译软件-自动批量中英文翻译软件推荐大全
  18. php jdbc链接数据库,JDBC连接数据库大全
  19. oracle 使用 mybatis select in 10000问题怎么解决
  20. Firefox OS的奇幻漂流——全面解析新一代Open Web移动操作系统

热门文章

  1. ZeroForums论坛正式开始测试运行
  2. oracle 配置 ACL 使用数据库发送WebServic请求时需要
  3. Swift中类的使用
  4. python基础-函数之装饰器、迭代器与生成器
  5. JavaScript 继承
  6. Apache 简单设置虚拟主机
  7. STM32工作笔记0084---UCOSIII软件定时器
  8. IOS工作笔记001---windows下安装通过VmWare来安装IOS系统_并连接上网_来吧超级详细
  9. 数据库工作笔记001---mysql 修改字符集_修改排序规则
  10. JAVA零碎要点008---tomcat启动的时候报错了严重: End event threw exception java.lang.reflect.InvocationTargetExcepti