第六周练习 part1 --- 类

  

 1 #
 2 class Role:
 3     def __init__(self, name, character, weapon, skills=10, life_value=10000, money=30000, level=99):
 4         # 构造函数,在实例化时做一些类的初始化工作
 5         self.name = name  # [[实例变量]](静态属性)【变量】,作用域是实例本身
 6         self.character = character
 7         self.weapon = weapon
 8         self.life_value = life_value  # 私有属性——前面加两个杠,就不能在类的外部直接访问、更改了,类内部的方法仍可以访问
 9         self.money = money
10         self.level = level
11         self.skills = skills
12 
13     def __del__(self):
14         # 析构函数,做收尾工作
15         print("%s Completely Dead" % self.name)
16 
17 class Villan(Role):
18     def kill(self):
19         print("I am Thanos")
20 
21 class Avenger(Role):
22     A = "Infinity War"  # [[类变量]]
23     '''类变量与实例变量
24     类变量存储实例共有的属性,实例变量存储各自特有的属性
25     所以若实例变量中出现了和类变量同名的变量,自然是优先访问实例变量
26     但并不通过将其设置为默认参数来给实例添加属性,因为类变量只需要一份存储空间
27     而实例变量则每次实例化都会占用一次存储空间'''
28 
29     def show_info(self):
30         # 类的方法、功能(动态属性)【方法】
31         print('''Name: %s\nCharacter: %s\nWeapon: %s\nLife_value: %s\nMoney: %s\nSkills: %s\nLevel: %s'''
32               % (self.name, self.character, self.weapon, self.life_value, self.money, self.skills, self.level))
33 
34     def aim_at(self, name):
35         print("Aim at %s now" %name)
36 
37     def shoot(self):
38         self.money += 10
39         print("Target got shoot")
40         print("%s earned 10 bucks and now he has %s bucks" % (self.name, self.money))
41 
42     def get_shoot(self):
43         self.life_value -= 10
44         print("%s got shoot and his current life value is %s" %(self.name, self.life_value))
45 
46     def gun(self, new_weapon):
47         self.weapon = new_weapon
48         self.money -= 100
49         print("%s costs you 100 bucks and now you have %s bucks left" %(new_weapon, self.money))
50 
51     def __privatefunc(self):  # 私有方法,也是在类外部不能调用,只能在内部由别的方法调用
52         pass
53 
54 # 实例化过程,得到 Role 的实例
55 # c1 = Avenger('Lief', 'GoodMan', '399式')
56 c2 = Avenger('Tony', 'IronMan', 'Mark 47', money=1000000000)
57 c3 = Avenger('Thor', 'ThunderGod', 'StormHammer')
58 # c4 = Avenger('Peter', 'SpiderMan', 'IronSpiderSuit')
59 # c5 = Avenger('Banner', 'Hulk', 'HisFists', skills=5)
60 # c6 = Avenger('Natasha', 'BlackWidow', 'WidowsBite', skills=100)
61 # c0 = Villan("Thanos", '灭霸', "Infinety Gloves")
62 #
63 c2.show_info()
64 # c1.aim_at('Tony')
65 # c1.shoot()
66 # c2.get_shoot()

猜你喜欢

转载自www.cnblogs.com/lief/p/9059630.html