python面向对象-cs游戏示例

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

  

猜你喜欢

转载自www.cnblogs.com/octopuszy/p/9064713.html
今日推荐