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:\Users\79453\Anaconda3\python.exe "D:/PyCharm 2018.1/pycorrector-master/tests/self_model.py"
[ak47] 突突突...子弹有: [29]
[ak47] 突突突...子弹有: [28]
冲啊... [jack]
[ak47] 突突突...子弹有: [57]

Process finished with exit code 0

原文地址:https://www.cnblogs.com/baobaotql/p/10714258.html

时间: 2024-11-06 15:39:47

Python——类的封装的相关文章

python 类的封装

封装:即在设计类时,刻意的将一些属性和方法隐藏在类的内部,这样将无法直接以"类对象.属性名"(或者"类对象.方法名(参数)")的形式调用这些属性(或方法),而只能用未隐藏的方法间接的操作这些隐藏的属性和方法. 封装机制保证了类内部数据结构的完整性,很好的避免了外部对内部数据的影响,提高了程序的可维护性. 避免用户对类中属性或方法进行不合理的操作. 提供代码的复用性. python类如何进行封装 不同于其他面向对象的编程语言,python类中的变量和函数不是共有的就是

Python类总结-封装(Property)

Property #property #内置装饰器函数,只在面向对象中使用 from math import pi class Circle: def __init__(self,r ): self.r = r @property def perimeter(self):#property属性不能传递任何参数 return 2*pi*self.r @property def area(self): return self.r**2*pi c1 = Circle(5) # print(c1.are

LightMysql:为方便操作MySQL而封装的Python类

原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python操作MySQL数据库的一个常用包.但在使用过程中,我认为用起来还不够简便.为此,我在mysqldb的基础上封装了一个Python类LightMysql. 先来看如何使用 example.py #!/usr/bin/env python # -*- coding: utf-8 -*- from Lig

Python 类 类的封装,继承 ,多继承

__author__ = '12711'#-*- coding:utf-8 -*-# class Animal(object):# name='xxx'# def __init__(self,name,age):# self.name=name# self.age=age## def eat(self):# print("%s开始吃东西了"%(self.name))## def seelp(self):# print("%s开始睡觉了"%(self.name))##

Python 基础之面向对象初识与类的封装

一: 面向对象类的初识#(1) 类的定义#三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(object):    pass#(2) 类的实例化class MyClass():    pass#类的实例化,实例化对象obj = MyClass() #obj 就是一个对象#(3)类的基本结构只有成员方法和成员属性对象.属性  对象.方法()#例:class MyClass():    #成员属

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

Python面向对象编程-封装

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

python类及其方法

python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类有这样一些的优点: 1.类对象是多态的:也就是多种形态,这意味着我们可以对不同的类对象使用同样的操作方法,而不需要额外写代码. 2.类的封装:封装之后,可以直接调用类的对象,来操作内部的一些类方法,不需要让使用者看到代码工作的细节. 3.类的继承:类可以从其它类或者元类中继承它们的

python类:类方法和静态方法

http://blog.csdn.net/pipisorry/article/details/49516185 面相对象程序设计中,类方法和静态方法是经常用到的两个术语.逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用.在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆.在python中,方法分为三类实例方法.类方法.静态方法. @classmethod和@staticmethod 他们的使用场景并不一样.在python中,两种方法的主要区别在于参数 类内部普