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

原文地址:https://www.cnblogs.com/tianqizhi/p/8468868.html