转自 http://www.cnblogs.com/BeginMan/p/3190776.html

一、Python经典类与新类

经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类:

class classics:
'define a classics Class'
pass

新式类:与经典类相反。object是“所有类之母”,也就是基类,如果你的类没有继承任何父类,object将作为默认的父类:

class newClass(object):
'define a classics Class'
pass

二、Python的实例化

创建一个实例的过程叫实例化,在其他编程语言中一般用关键字 new ,但是在Python中没有这个关键字。而是类似函数调用的方式创建实例的:

class newClass(object):
pass inst = newClass()
print inst #<__main__.newClass object at 0x00B71650>

三、类最简单的用法

类最简单的用法仅仅用作名称空间,意味着将数据保存到变量中,使用句点属性标识对它们按名称空间分组。

class newClass(object):
pass bar = newClass() #创建实例
bar.x = 1 #创建实例属性
bar.y = 2
print bar.x+bar.y

注意:bar.x  ,bar.y  是实例对象的属性不是类的属性。

四、方法

方法就是类的功能

方法在类中定义,只能被实例调用。

在类中,方法有一个默认参数self,这个参数代表实例本身,当用实例调用方法时,由解释器悄悄传递给方法。

class newClass(object):
def method(self):
return self bar = newClass()
print bar.method() #<__main__.newClass object at 0x00B71910>

在其他语言中,self一般称为this,一般方法会用到这个实例(self),但是静态方法和类方法不需要。

五、创建类、方法、实例对象访问

class addPerson(object):
def __init__(self,nm,ph): #定义构造器
self.name = nm #设置name
self.phone = ph #设置phone
print 'Created instance for',self.name
def updatePhone(self,newph):
self.phone = newph
print 'Updated phone for',self.phone josn = addPerson('JSON','1565208444') #创建实例对象josn
ben = addPerson('Ben','15249638892') #创建实例对象ben
print 'Instance property:[%s][%s]' %(ben.name,ben.phone) #访问实例属性
ben.updatePhone('110')
print ben.phone

六、子类

创建子类:靠继承来进行子类化,在不影响父类(基类)的基础上改进自己的功能。

如:继承上面的类

class addInfo(addPerson):
def __init__(self,nm,ph,id,em): #定义自己的构造器
addPerson.__init__(self, nm, ph) #继承父类构造器(这个很重要)
self.empid = id
self.email = em def updateEmail(self,newem):
self.email = newem
print 'Updated e-mail address for:',self.name zhangsan = addInfo('ZhangSan','123456789','01','ZhangSan@gmail') #创建addInfo实例,输出Created instance for ZhangSan
print zhangsan #<__main__.addInfo object at 0x00B71BD0>
print 'Instance property:[%s],[%s],[%s],[%s]' %(zhangsan.name,zhangsan.phone,zhangsan.empid,zhangsan.email)
#输出:Instance property:[ZhangSan],[123456789],[01],[ZhangSan@gmail]
zhangsan.updatePhone('250') #Updated phone for 250
zhangsan.updateEmail('Zhang@163.com') #Updated e-mail address for: ZhangSan

注意:

如果需要,每个子类最好定义自己的构造器,不然的话,基类的构造器将会被调用。然而如果子类重写基类的构造器,那么基类的构造器就不会被自动调用,必须显式写出来才行,如上的:addPerson.__init__

Python学习(23):Python面向对象(1)速成的更多相关文章

  1. Python学习-23.Python中的函数——isinstance

    在Python中可以使用isinstance函数来判断某个值或变量是否为某个类型. 例子: print(isinstance(1,int)) print(isinstance(1,float)) pr ...

  2. Python学习day09 - Python进阶(3)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  3. Python学习day05 - Python基础(3) 格式化输出和基本运算符

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. 【python学习-5】面向对象的python

    python是一种面向对象的编程语言,虽然与C++一样,支持面向过程的程序设计,python完全可以使用函数.模块等方式来完成工作,但是当使用python编写一个较大的项目时,则应该考虑使用面向对象的 ...

  5. python学习笔记(7): 面向对象

    class Foo: #类中的函数 def bar(self): #功能阐述 print('Bar') pass def hello(self,name): print('i am %s' %name ...

  6. python学习之python开发环境搭建

    Python简介 Python是一种面向对象.解释型计算机程序设计语言.Python语法简洁而清晰,具有丰富和强大的类库等等众多的特性,这是来自百度百科的介绍,在百度百科还能看到它的更详细的介绍信息, ...

  7. python学习: 优秀Python学习资源收集汇总--转

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  8. python学习笔记--python简介

    一.什么是python? python是一种面向对象.解释型的高级程序语言.python具有语法简洁.易于学习.功能强大,可扩展性强,跨平台等诸多特点.1989年开始开发,于1991年发布第一个公开发 ...

  9. Python学习day07 - Python进阶(1) 内置方法

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  10. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

随机推荐

  1. python获取代码行号

    获取行号: def get_file(): print("文件名 :",__file__,sys._getframe().f_lineno) print("函数名: &q ...

  2. Eclipse/MyEclipse上配置Spring环境

    在MyEclipse上配置Spring环境 myeclipse其实已经集成Spring的开发环境,我们只需在新建的项目上添加spring的配置环境就可以 新建一个java项目 选中创建好的项目之后,在 ...

  3. (原)tslib的交叉编译

    今天准备重新来交叉编译qt5.3.1的源码,由于按网上说的,需要先编译tslib,所以拿起来之前的编译源码,打算重新用新的交叉编译工具再次编译一次,在查找资料的过程中浪费了些许时间.其实直接就在使用s ...

  4. svn -- svn权限控制

    权限控制 问题:当前采用单仓库或多仓库配置中,所有的文件权限都是可读写的,这样就会存在一个问题,只要任何知道了我们的访问地址,那么都可以对文件进行读写操作. 1.为什么需要权限控制 打开服务器端的项目 ...

  5. Ubuntu 14.04 LTS 安装 Juno 版 OpenStack Keystone

    本文介绍如何在Ubuntu 14.04 LTS 上安装Juno版的Keystone, 我们采用的是手动安装的方式, 同时仅针对OpenStack的身份与访问管理系统Keystone. 事实上OpenS ...

  6. POJ 3126 --Father Christmas flymouse【scc缩点构图 &amp;&amp; SPFA求最长路】

    Father Christmas flymouse Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 3007   Accep ...

  7. C#实现windows服务安装,服务名可配置时出问题(无法创建 ProjectInstaller 安装程序类型的实例)

    [参考资料]Windows 安装服务 的两种方式 一.问题出在System.Configuration.ConfigurationManager.AppSettings[""].T ...

  8. python unittest 3- 框架Nose

    当前python的测试框架主要有以下三个: 1)zope.testing 2)py.test 3)Nose Nose下载:https://github.com/nose-devs/nose 1.Nos ...

  9. Qt OpenGL裁剪测试

    剪裁测试(Scissor Test)用于限制绘制区域. 我们可以指定一个矩形的剪裁窗口,当启用剪裁测试后,只有在这个窗口之内的像素才能被绘制,其它像素则会被丢弃. 换句话说,无论怎么绘制,剪裁窗口以外 ...

  10. CIO需加强对战略管理层面的掌控-精华篇

    当代CIO面临提升信息化作用的新机遇.CIO在企业中,不能满足于职能性的技术支撑角色,要找到新的着力点,以发挥信息化在全局战略中的作用,把信息化力量聚焦于做强做优,提高国际竞争力上来,成为企业不可或缺 ...