同样作为动态语言,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的更多相关文章

  1. Python学习札记(二) python3.5安装 + (假装是)第一个Python程序

    参考: Mac OS 安装 Python3.5 廖雪峰Python教程:安装Python 笔记: 安装: 1.官方网站下载安装包:安装程序 2.执行安装程序完成Python3.5包的安装. 3.安装P ...

  2. python学习笔记二:(python3 logging函数中format说明)

    背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...

  3. 吴裕雄--天生自然python学习笔记:Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  4. 吴裕雄--天生自然python学习笔记:Python3 JSON 数据解析

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进 ...

  5. 吴裕雄--天生自然python学习笔记:Python3 多线程

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条 ...

  6. 吴裕雄--天生自然python学习笔记:Python3 SMTP发送邮件

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...

  7. 吴裕雄--天生自然python学习笔记:Python3 网络编程

    Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络 ...

  8. 吴裕雄--天生自然python学习笔记:Python3 MySQL 数据库连接 - PyMySQL 驱动

    什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...

  9. 吴裕雄--天生自然python学习笔记:Python3 命名空间和作用域

    命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空间是独立的,没有任何关系的,所以一个 ...

随机推荐

  1. 5、C#基础 - C#的值类型

    1.C#的值类型 有几个特点: 存储在栈里 基于值类型的变量直接包含值(值类型存储实际值). 将一个值类型变量赋给另一个值类型变量时,将复制包含的值. 这与引用类型变量的赋值不同,引用类型变量的赋值只 ...

  2. 【GISer&&Painter】GISer

    基于上一篇OpenGL的渲染原理,这两周又陆续接触了一些关于WebGL绘图的一些内容,因为刚入门,很多东西又很晦涩,所以特意花了小半天的时间整理了一下,特此记录. 一   画布和画笔:创建Canvas ...

  3. 使用js做创建图片及删除图片 若有什么不对或不完整的地方,请大家提出来,谢谢

    首先我们要在<body>中创建一个按钮<button>来用作点击创建图片,在<button>中写一个点击事件(随便命名), 在创建一个<div>存放图片 ...

  4. 【技能大赛笔记01】Zigbee点对点按键控制程序开发

    [技能大赛笔记01]Zigbee点对点按键控制程序开发 --2017年"物联网物联网技术应用与维护"任务五题1(中职组) 1.题目要求 2.工程文件 在比赛中,提供了一个基于Bas ...

  5. xml解析(4)

    本节要点: DOM解析方式 SAX解析方式 DOM4J对XML的解析 XML用于将数据组织起来,形成文档用于存储和传输: 更多时候我们需要的是将xml中的数据解析出来,甚至是在程序中动态生成xml. ...

  6. 微服务架构之RPC-client序列化细节

    通过上篇文章的介绍,知道了要实施微服务,首先要搞定RPC框架,RPC框架的职责要向[调用方]和[服务提供方]屏蔽各种复杂性: (1)让调用方感觉就像调用本地函数一样 (2)让服务提供方感觉就像实现一个 ...

  7. 三、spring cloud 服务提供与调用

    如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用. 案例中有三个角色:服务注册中心.服务提供者.服务消费者,eureka单机版启动既可,流程是首先启动注册中心,服务 ...

  8. Python的下划线_

    1.单下划线(_) 通常情况下,单下划线(_)会在以下3种场景中使用: 1.1 在解释器中: 在这种情况下,"_"代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准C ...

  9. springboot+多数据源配置

    作者:纯洁的微笑 出处:http://www.ityouknow.com/ 起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多 ...

  10. springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置

    一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库 ...