标签:
内容目录:
面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。
当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
类是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
# 创建类 class SQLHELPER: def fetch(self,sql): print(obj.hhost) print(obj.username) print(obj.passwd) print(sql) def create(self,sql): pass def remove(self,sql): pass def modify(self,sql): pass # 根据类SQLHELPER创建对象obj obj = SQLHELPER() obj.hhost = ‘c1.salt.com‘ #相同的参数封装在对象中 obj.username = ‘root‘ obj.passwd = ‘123‘ obj.fetch(‘select * from A;‘)#执行fetch方法
在类中有__init__的构造方法自动执行,我们通常可以将公共的参数写入到init方法中
class Foo: def __init__(self): print(‘自动被执行‘) self.hhost = ‘c1.salt.com‘ #将hhost变量写入到init方法中 self.username = ‘root‘ #将username 变量写入到init方法中 self.pwd= ‘123‘ #将pwd变量写入到init方法中 obj = Foo() #输出: 自动被执行
应用
class Foo: def __init__(self,a1,a2,a3): #通过传参来写init方法 print(‘自动被执行‘) self.hhost = a1 self.username = a2 self.root = a3 print(a1,a2,a3) def fetch(self): pass def remove(self): pass def modify(self): pass def create(self): pass obj1 = Foo(‘c1.salt.com‘,‘root1‘,‘123‘) obj2 = Foo(‘c2.salt.com‘,‘root2‘,‘123‘)
self的理解
self是python自动会给传值的参数
哪个对象执行方法,self就是谁
obj1.fetch(‘select * ....‘) self = obj1 obj2.fetch(‘select * ....‘) self = obj2
面向对象的三大特性是指:封装、继承和多态。
1、封装
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。所以,在使用面向对象的封装特性时,需要如下的操作:
将内容封装到某处
从某处调用被封装的内容
可以从下面的图中事例来理解封装
self 是一个形式参数,当执行 obj1 = Foo(‘wupeiqi‘, 18 ) 时,self 等于 obj1
当执行 obj2 = Foo(‘alex‘, 78 ) 时,self 等于 obj2
所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都封装了 name 和 age ,之前说的“内容封装到某处”其在内容里类似于下图来保存。
练习:
1、创建三个游戏人物,分别是:
苍井井,女,18,初始战斗力1000
东尼木木,男,20,初始战斗力1800
波多多,女,19,初始战斗力2500
2、游戏场景,分别:
草丛战斗,消耗200战斗力
自我修炼,增长100战斗力
多人游戏,消耗500战斗力
# -*- coding:utf-8 -*- # ##################### 定义实现功能的类 ##################### class Person: def __init__(self, na, gen, age, fig): self.name = na self.gender = gen self.age = age self.fight =fig def grassland(self): """注释:草丛战斗,消耗200战斗力""" self.fight = self.fight - 200 def practice(self): """注释:自我修炼,增长100战斗力""" self.fight = self.fight + 200 def incest(self): """注释:多人游戏,消耗500战斗力""" self.fight = self.fight - 500 def detail(self): """注释:当前对象的详细情况""" temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s" % (self.name, self.gender, self.age, self.fight) print temp # ##################### 开始游戏 ##################### cang = Person(‘苍井井‘, ‘女‘, 18, 1000) # 创建苍井井角色 dong = Person(‘东尼木木‘, ‘男‘, 20, 1800) # 创建东尼木木角色 bo = Person(‘波多多‘, ‘女‘, 19, 2500) # 创建波多多角色 cang.incest() #苍井空参加一次多人游戏 dong.practice()#东尼木木自我修炼了一次 bo.grassland() #波多多参加一次草丛战斗 #输出当前所有人的详细情况 cang.detail() dong.detail() bo.detail() cang.incest() #苍井空又参加一次多人游戏 dong.incest() #东尼木木也参加了一个多人游戏 bo.practice() #波多多自我修炼了一次 #输出当前所有人的详细情况 cang.detail() dong.detail() bo.detail()
2、继承
继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。
如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,如下所示:
普通继承
多重继承
参考url:http://www.cnblogs.com/wupeiqi/p/4493506.html
标签:
原文地址:http://www.cnblogs.com/Jabe/p/5599104.html