python_94_类变量实例变量
class Role: n=123#类变量 name='我是类name' list=[] 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("shooting...") def got_shot(self): print("ah...,I got shot...") def buy_gun(self,gun_name): print("%s just bought %s"%(self.name,gun_name)) print(Role,Role.n) r1= Role('Alex','police','AK47') #生成一个角色,为Role(类)的一个实例 r2= Role('Jack','terrorist','B22')#Role(r2,'Jack','terrorist','B22')把一个类变成一个具体对象的过程叫 实例化(初始化一个类,造了一个对象) print(r2.n,r2.name)#打印的name是实例化的name,不是类name(规律:变量先去实例中找,找不到再去类中找) r2.n='改变类变量'#在r2实例中增加了个实例变量n,类变量其实没改变,所以r1.n还是123 print(r2.n,Role.n,r1.n) Role.n='ABC' print(r2.n,Role.n,r1.n)#r2.n不变,取的是自身的实例变量n r2.name='王大屯' r2.fangdanyi=True print(r2.name,r2.fangdanyi) r2.buy_gun('机关枪') print(r2.weapon) del r2.weapon #print(r2.weapon)删掉后打印不出来 r1.list.append('from r1') print(r1.list) r2.list.append('from r2') print(r2.list) print(Role.list)#三个list都共用的同一个内存变量
参考:http://www.cnblogs.com/alex3714/articles/5188179.html