Python学习之类的继承

Python学习之类的继承

class Role:
    n = 123  #类变量,存在类的内存里
    name = "我是类name"
    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 __del__(self):
        pass #print("%s 彻底死了"%self.name)
    def show_status(self):
        print("name : %s weapon:%s life_value:%s"%(self.name,self.weapon,self.__life_value))
    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))

#类开辟一块新的内存空间指向r1这个变量名,存下面的东西,name= alex,等
# 调用Role(‘Alex‘, ‘police‘,‘AK47‘)的时候把r1当作参数也传进去,是为了把‘Alex‘,‘police‘,’AK47’这3个值跟刚开辟的r1关联起来,
# 相当于Role(r1,‘Alex‘, ‘police‘,‘AK47‘),self就是r1,
# 关联起来后,你就可以直接r1.name, r1.weapon 这样来调用啦
#为实现这种关联,在调用__init__方法时,就必须把r1这个变量也传进去,即传进去谁,self就是谁,否则__init__不知道要把那3个参数跟谁关联
#所以这个__init__(…)方法里的,self.name = name , self.role = role 等等的意思就是要把这几个值 存到r1的内存空间里,
# 即 r1 = Role(r1,‘Alex‘, ‘police‘,‘AK47‘)
# r1.name="alex"
# r1.role="Police"
# r1.buy_gun("AK47")  # Role.buy_gun(r1)
# #把一个类变成一个具体对象的过程叫实例化(初始化一个类,造了一个对象)
# #生成一个角色
# r2 = Role(‘Jack‘, ‘terrorist‘,‘B22‘)
# #生成一个角色
# r1.buy_gun("AK47")  # Role.buy_gun(r1)
# print(Role.n)

r1 = Role(‘Alex‘, ‘police‘,‘AK47‘)
r1.buy_gun("AK47")
r1.got_shot()
# print(r1.__life_value)
r1.show_status()
# del r1

r2 = Role(‘Jack‘, ‘terrorist‘,‘B22‘)
r2.buy_gun("AK47")
r2.got_shot()

相关推荐