Python学习_10__python2到python3
同样作为动态语言,python的面相对像和ruby有很多类似的地方,这里还是推荐《Ruby元编程》一书来参考学习python的面向对象。然而python并不是纯面向对象设计,所以很多ruby种灵活的技巧在python中可能并不适用,但是这并不影响该书对python面向对象学习的借鉴意义。
从类和实例开始,谈python2到python3
类和实例是面向对象的基础,类是一个对象的定义,比如人类定义了人应该有的基本属性和方法,而实例则是真正的实物,实例中存放了对象的具体信息,如小明是人类的一个实例,小明的身高体重等信息构成小明这个对象的具体信息。然而,类本省也是一个对象,新式类全都继承自一个父类,object是所有类的祖先,是祖先类的最顶级建筑,object这个类也是一个对象,python中,object的类不再称为class,而是type,任何用class关键字定义的类,都是type的一个实例。
类可以通过class关键字来创建:
class MyNewObjectType(bases):
‘define MyNewObjectType class’
class_suite
在python2中,这里面其实一团糟,经典类:没有继承自其他类的类,是没有__class__属性的,通过type()方法,可以看到,经典类的类型是:<type 'classobj’>;而新式类,即通过继承其他类而来的类,其类型则是type,python曾近试图将type和class统一,但是明显在python2中,这些概念还是能够困扰到一些人:
class Cls1:
pass
print type(Cls1)
class Cls2(object):
pass
print type(Cls2)
print Cls2.__class__
上述代码结果为:
<type 'classobj'>
<type 'type'>
<type 'type'>
如果你沉迷于类似ruby那样纯面向对象的语法,python2或许会让你受不了,这些遗留问题在python3中得以解决,使其对面向对象的支持更加优秀。

鉴于以上原因,在python面向对象的学习中,全部采用python3,python3由于很多对python2的不兼容性受到质疑,但是至少朝着正确的方向发展,如果不更改python2中遗留的一些问题,当python的库越来越多的时候,难以避免会出现更多的问题,python3的升级同时也会讲一些python2中劣质的库做一次淘汰,优质的库肯定在社区中会得到优先地移植,从语言本身来讲,这未尝不是一件好事情,可以让python3摆脱掉很多的历史包袱,并且具有更加优秀的语法,也让我对其有更加好的预期。从python2到python3是一个重要的决定,他可能会让python失去很多,甚至可能会让python退出舞台,但是我仍然对其看好,相比java对扩展包的不闻不问,python3对自身做出的决绝的改革给python搭建了全新的舞台。
python3中的新特性
http://my.oschina.net/lenglingx/blog/205626
一些常用特性上文中都以提到
Python学习_10__python2到python3的更多相关文章
- Python学习札记(二) python3.5安装 + (假装是)第一个Python程序
参考: Mac OS 安装 Python3.5 廖雪峰Python教程:安装Python 笔记: 安装: 1.官方网站下载安装包:安装程序 2.执行安装程序完成Python3.5包的安装. 3.安装P ...
- python学习笔记二:(python3 logging函数中format说明)
背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...
- 吴裕雄--天生自然python学习笔记:Python3 日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...
- 吴裕雄--天生自然python学习笔记:Python3 JSON 数据解析
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进 ...
- 吴裕雄--天生自然python学习笔记:Python3 多线程
多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条 ...
- 吴裕雄--天生自然python学习笔记:Python3 SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...
- 吴裕雄--天生自然python学习笔记:Python3 网络编程
Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络 ...
- 吴裕雄--天生自然python学习笔记:Python3 MySQL 数据库连接 - PyMySQL 驱动
什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...
- 吴裕雄--天生自然python学习笔记:Python3 命名空间和作用域
命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空间是独立的,没有任何关系的,所以一个 ...
随机推荐
- Netty4.0.24.Final 版本中 IdleStateHandler 使用时的局限性
使用Netty在客户端和服务端建立通讯通道,一般来说,一个连接可能很久没有访问,由于各种各样的网络问题导致连接已经失效,客户端再次发送请求时会产生连接异常. 基于这个原因,需要在客户端和服务端之间建立 ...
- ORACLE SQL 整理
1.查询字段中含有小写字母的数据 SELECT MATERIALCODE FROM RFXITEMATTENDCODE WHERE REGEXP_LIKE(MATERIALCODE,'([a-z])' ...
- 利用qq设置个性化的域名邮箱
首先有域名.先去注冊先,国内有非常多域名交易平台.我是在易名中国网上注冊的一个域名,Lios.top,因为这个域名价值非常低.一年才 10元,价格非常实惠. 下一步就是去qq邮箱的设置里,找到账户,然 ...
- Linux性能及调优指南(翻译)之Linux进程管理
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- php之str_replace具体解释
str_replace (PHP 4, PHP 5) str_replace - Replace all occurrences of the search string with the repla ...
- 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构
1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...
- 自学Zabbix1.1-简介
1. 初识Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决 方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利. ...
- mybatis分页练手
最近碰到个需求,要做个透明的mybatis分页功能,描述如下:目标:搜索列表的Controller action要和原先保持一样,并且返回的json需要有分页信息,如: @ResponseBody @ ...
- Asp.Net Web API(四)
HttpResponseException-----HTTP响应异常 如果Web API控制器抛出一个未捕捉的异常,会发生什么呢?在默认情况下,大多数异常都会转换为一个带有状态码500的内部服务器错误 ...
- lua中怎么替换掉字符串中的$^特殊字符?
Lua 常规替换字符串如何替换 s = string.gsub("Lua is good", "good", "bad") print(s) ...