#!/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()