Python——类的封装

Posted baobaotql

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python——类的封装相关的知识,希望对你有一定的参考价值。

 1 class Gun:
 2     def __init__(self, model):
 3 
 4         # 1. 枪的型号
 5         self.model = model
 6 
 7         # 2. 子弹的数量
 8         self.bullet_count = 0
 9 
10     def add_bullet(self, count):
11 
12         self.bullet_count += count
13 
14     def shoot(self):
15 
16         # 1. 判断字弹的数量
17         if self.bullet_count <= 0:
18             print("[%s] 没有字弹了..." % self.model)
19             return
20 
21         # 2. 发射子弹
22         self.bullet_count -= 1
23 
24         # 3. 提示发射信息
25         print("[%s] 突突突...子弹有: [%d]" % (self.model, self.bullet_count))
26 
27 
28 # 创建枪对象
29 ak47 = Gun(ak47)
30 ak47.add_bullet(30)
31 ak47.shoot()
32 ak47.shoot()
33 
34 
35 class Soldier:
36     def __init__(self, name):
37         self.name = name
38         self.gun = None    # 私有
39 
40     def fire(self):
41         # 1. 判断士兵是否有枪
42         if self.gun is None:   # 身份运算符(is) 可以替换(==)
43             print("[%s] 还没有枪..." % self.name)
44             return
45 
46         # 2. 口号
47         print("冲啊... [%s]" % self.name)
48 
49         # 3. 装子弹
50         self.gun.add_bullet(30)
51 
52         # 4. 发射子弹
53         self.gun.shoot()
54 
55 # 创建一个士兵
56 jack = Soldier("jack")
57 jack.gun = ak47
58 jack.fire()
59 #print(jack.gun)

 

输出:

C:Users79453Anaconda3python.exe "D:/PyCharm 2018.1/pycorrector-master/tests/self_model.py"
[ak47] 突突突...子弹有: [29]
[ak47] 突突突...子弹有: [28]
冲啊... [jack]
[ak47] 突突突...子弹有: [57]

Process finished with exit code 0

 

以上是关于Python——类的封装的主要内容,如果未能解决你的问题,请参考以下文章

python-类的封装(私有属性,私有方法)

python 类的封装

有条件地导入 python 类的片段

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装