对象 - python
1) 面向对象的介绍
2) 特性 (封装,继承,多态)
3) 语法(语法、方法、构造函数、析构函数)
析构函数:在实例释放、销毁的时候执行的,通常是一些守卫工作,关闭等等 def __del__(self)
4) 私有方法、私有属性 ##加两个__
5) 类变量、实例变量
继承
#py2, 经典类按深度优先来继承,新式类按广度优先来继承
#py3,经典类和新式类都是按照统一广度优先来继承的
反射
通过字符串映射或者修改程序运行时的状态、属性、方法,有4个方法
1) getattr
2) hasattr(classname, function_name)
3) setattr - 动态的将一个外部方法传到类里面
4) delattr
异常
try:
code
except (Error1, Error2)as e:
print(e)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class Role(object): abc = "abc This is class parameter!" #类变量 def __init__(self, name, role, weapon, life_value=100, money=15000): self.name = name #实例变量(静态属性)的作用域在实例本身 self.role = role self.weapon = weapon self.__life_value = life_value self.money = money def shot(self): #类的方法 print(self.name+" shooting...") def got_shot(self): print(self.name+" ah...,I got shot...") def buy_gun(self, gun_name): print("just bought %s" % gun_name) self.weapon = gun_name def show_status(self): print("Name: %s, Weapon:%s, Life Value = %s"%(self.name, self.weapon, self.__life_value)) def __del__(self): print("release the class role") class police(Role): def __init__(self,name,weapon,life_value, level): ###必须先把父类的参数都写入!!! Role.__init__(self,name,weapon,life_value) ###调用父类的方法,将参数传递进去!!! self.level = level print("Police initial ... level %s"%self.level) def show_police(self): print("I am a policeman in POLICE CLASS! Name: %s, Weapon: %s, Level:%s"%(self.name,self.weapon,self.level)) class shoot(Role): def kill(self,obj): print("%s is killing %s"%(self.name, obj.name)) r1 = Role('Alex', 'police', 'AK47') #生成一个角色,实例化(初始化一个类,造了一个对象) r2 = Role('Jack', 'terrorist', 'B22') #生成一个角色 r1.name = "ddw" #可以改class方法中的属性的值 r1.bullet_prove = True #可以为class中的方法新加一个属性 del r1.bullet_prove #可以在实例中删除一个变量 r1.shot() r2.got_shot() print(Role.abc +"直接打印class变量!!!") print(r1.abc,r1.weapon) r1.buy_gun("AAA123") print(r1.weapon) r1.show_status() p1 = police("ABC","A_weapon","AK**",'3') p1.show_police() r3 = shoot("Louie","police","RJ233") #r3 = shoot(r1) r3.kill(r2) del r1 del r2 #print(r1.abc,r1.weapon)