标签:
一、面向对象技术简介
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
实例变量:定义在方法中的变量,只作用于当前实例的类。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
实例化:创建一个类的实例,类的具体对象。
方法:类中定义的函数。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
二、面向对象基本使用
1)创建类:
1 2 3 4 5 6 | class Role(object): def __init__(self,name,role,weapon,lif_value): self.name = name self.role = role self.weapon = weapon self.lif_value = lif_value |
class是关键字,表示类
创建对象,类名称后加括号即可
__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
object是新式类 如果不加 直接是()是旧式类
如下:
1 2 3 4 | class Role(): def __init(self,name,role): self.name = name self.role = role |
案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #创建类 类名是Roleclass Role(object): def __init__(self,name,role,weapon,lif_value): self.name = name self.role = role self.weapon = weapon self.lif_value = lif_value #self为特殊参数,必填 def buy_weapon(self,weapon): print(‘用户%s 购买了%s‘%(self.name,weapon)) self.weapon = weapon def add_blood(self,lif_value): print(‘用户%s 加了%s‘%(self.name,lif_value)) self.lif_value = lif_value#根据类创建对象P1P1= Role(‘liuyao‘,‘aoteman‘,‘b11‘,100)#执行类提供的buy_weapon方法P1.buy_weapon("ak47")#执行类提供的add_blood方法P1.add_blood(‘100‘) |
三、面向对象三大特性
1、封装
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。
所以,在使用面向对象的封装特性时,需要:
1)将内容封装到某处
1 2 3 4 5 6 7 8 9 10 11 12 | #创建一个类class Role(object): #构造方法 def __init__(self,name,age,job,salary): self.name = name self.age = age self.job = job self.salary = salary#将变量封装到类里的name,age,job,salary里面user1 = Role(‘liuyao‘,‘21‘,‘IT‘,‘1000‘)user2 = Role(‘mayun‘,‘22‘,‘IT‘,‘2100‘) |
self 是一个形式参数,当执行 user1 = Role(‘liuyao‘,‘21‘,‘IT‘,‘1000‘) 时,self 等于user1
当执行 user2 = Role(‘mayun‘,‘22‘,‘IT‘,‘2100‘) 时,self 等于 user2
所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name,age,job,salary 属性
2)从某处调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #创建一个类class Role(object): #构造方法 def __init__(self,name,age,job,salary): self.name = name self.age = age self.job = job self.salary = salary#将变量封装到类里的name,age,job,salary里面user1 = Role(‘liuyao‘,‘21‘,‘IT‘,‘1000‘)user2 = Role(‘mayun‘,‘22‘,‘IT‘,‘2100‘)#调用nameprint (user1.name)#调用ageprint (user1.age)#调用nameprint (user2.name)#调用ageprint (user2.age) |
2.继承
继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | class Role(object): ‘‘‘定义角色共有属性‘‘‘ def __init__(self,name,blood,force): self.name = name self.boold = blood self.force = force def regist(self,occupation): ‘‘‘初始化生命值和力量‘‘‘ print (‘%s:%s;生命值:%s 力值:%s‘%(occupation,self.name,self.boold,self.force)) def role_boold(self,ifboold): """减去生命值""" if self.boold >= 0: self.boold -= ifboold else: return 2000 def role_force(self,ifforce): """减去力""" if self.force >= 0: self.force -= ifforce else: return 3000 ‘‘‘鬼剑士角色‘‘‘class GhostKnight(Role): """鬼剑士""" occupation = ‘鬼剑士‘ def __init__(self,name,boold,force,skill): super(GhostKnight,self).__init__(name,boold,force) self.skill = skill self.regist(GhostKnight.occupation) def attack(self,enemy): """ 用于发动攻击 :param enemy:敌方姓名 """ ret = fighting(GhostKnight.occupation,self.skill,self) return ret |
标签:
原文地址:http://www.cnblogs.com/liu-yao/p/5219520.html