#!/usr/local/bin/python3 # -*- coding:utf-8 -*- class Role(object): 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_val:%s"%(self.name, self.weapon, self.__life_value)) def __shot(self): # 方法前加上两个下划线__代表这个方法为私有方法,外部无法调用 print("shooting...") def got_shot(self): print("%s:ah...,I got shot..."% self.name) self.__life_value-=50 def buy_gun(self, gun_name): print("just bought %s" % gun_name) ''' # 类变量和实例变量调用优先级:先找实例变量,如果实例中没有,那么就去找类变量 print(Role.n, Role.name) r1 = Role('Alex', 'police', 'AK47') # 对象,又叫做Role这个类的实例 r1.name = "张宇" # 对实例变量重新赋值 r1.cloth = True # 增加了新的实例变量(只在实例r1中才有,跟r2没有关系) del r1.weapon #删除了实例变量 r1.n = "改类变量" # 其实此处并不是改类变量,而是在实例中创建类一个变量n而已,和类变量没有关系 print(r1.n, r1.name, r1.cloth) r2 = Role('Jack', 'terrorist', 'B22') r2.name = "马宏燕" print(r2.n, r2.name) Role.n = 456 print(r1.n, r2.n) ''' ''' # 析构函数示例: r3 = Role('zhangyu', 'police', 'SKS') r3.buy_gun("AK47") r3.got_shot() del r3 r4 = Role('mahongyan', 'police', 'SKS') r4.buy_gun("AK47") r4.got_shot() ''' # 私有属性值的修改示例: r5 = Role('mahongyan', 'police', 'SKS') r5.got_shot() r5.show_status()