封装

示例代码:

class Role(object):
  count = 0   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
     self.__heart = "normal"
 
 
   def shot(self):      print("shooting...")
 
 
   def got_shot(self):      print("ah...,I got shot...")
     self.__heart = 'Die'
 
 
   def buy_gun(self,gun_name):      print("just bought %s" %gun_name)  
 
r1 = Role('Alex','police','AK47’) #生成一个角色 r2 = Role('Jack','terrorist','B22’) #生成一个角色

分析代码

  构造方法:函数__init__称为构造函数,或构造方法,用于执行类的实例的初始化工作。

  析构方法:函数__del__称为析构函数,或析构方法,用于实现销毁类的实例所需要的操作。通过del语句,可强制销毁一个对象实例。

  实例方法:又称为公有方法。类方法的第一参数一般为self,这种方法称为实例方法。像shot函数都是实例的方法,如果写成__shot就是私有方法。变成私有方法,就不能直接访问,但是可以在其他方法中访问。

  属性:类的数据成员是在类中定义的成员变量,用来存储描述类的特征的值。

  实例属性:通过self.变量名定义的属性,称为实例属性,也称为实例变量,成员属性,成员变量。示例代码中,在构造方法__init__中定义的self.name等就是实例属性。

    初始化:

      一般在__init__方法中初始化

      self.实例变量名 = 初始值

    访问:

      在其他函数中访问:

      self.实例变量名 = 值  # 写入

      self.实例变量名     # 读取

      在通过对象实例访问:

      obj1 = 类名()        # 创建对象实例

      obj1.实例变量名 = 值  # 写入

      obj1.实例变量名     # 读取

  私有属性:通常,以两个下划线开头,但是不以两个下划线结束的属性称为私有属性。私有属性不能直接被访问,但是可以在方法中访问。示例代码中,self.__heart就是私有属性,只能在方法中进行调用。

    强制访问方法:r1._Role__heart 就可以在外部访问到

  类属性:声明属于类本身的变量,即类的属性,也称为类变量、静态属性,有的称它是公有属性。示例代码中,count就是类的属性

    初始化:

      类变量名 = 初始值

    访问:

      类名.类变量名 = 值  # 写入

      类名.类变量名     # 读取

知识框架

1.25 Python知识进阶 - 封装的更多相关文章

  1. 1.23 Python知识进阶 - 面向对象编程

    一.编程方法 1.函数式编程:"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论.它属于"结构化 ...

  2. 1.26 Python知识进阶 - 继承

    继承 继承(Inheritance)是面向对象的程序设计中代码重要的主要方法.继承是允许使用现有类的功能,并在无需重新改写原来的类的情况下,对这些功能进行扩展.继承可以避免代码复制和相关的代码维护等问 ...

  3. 1.24 Python知识进阶 - 类与对象

    类 语法格式: class Dog(object): print("the dog is barking ...") Dog为类名,object为要继承的基类,Dog类会从基类ob ...

  4. 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器

    第四章 基础知识进阶第十七节 迭代.可迭代对象.迭代器 一.    引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本节 ...

  5. Python进阶-XVII 非python的接口类、多态、python自己的封装

    1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...

  6. Python爬虫进阶一之爬虫框架概述

    综述 爬虫入门之后,我们有两条路可以走. 一个是继续深入学习,以及关于设计模式的一些知识,强化Python相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展.另一条路便是学习一些优 ...

  7. python最全学习资料:python基础进阶+人工智能+机器学习+神经网络(包括黑马程序员2017年12月python视频(百度云链接))

    首先用数据说话,看看资料大小,达到675G 承诺:真实资料.不加密,获取资料请加QQ:122317653 包含内容:1.python基础+进阶+应用项目实战 2.神经网络算法+python应用 3.人 ...

  8. python学习大全:python基础进阶+人工智能+机器学习+神经网络

    首先用数据说话,看看资料大小,达到675G承诺:真实资料.不加密.(鉴于太多朋友加我QQ,我无法及时回复,) 方便的朋友给我点赞.评论下,谢谢!(内容较大,多次保存) [hide]链接:[url]ht ...

  9. Python爬虫进阶四之PySpider的用法

    审时度势 PySpider 是一个我个人认为非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇内容通过跟我做一个好玩的 ...

随机推荐

  1. zookeeper_相关命令 以及 API

    (区分大小写) 启动ZooKeeper服务        进入主目录下的 /bin 文件夹. zkServer.sh start.  需要每个节点运行启动命令 客户端启动          zkCli ...

  2. 安装Signavio Web设计器

    在Jbpm3版本号中,这个著名的开源项目并没有基于浏览器的图形化流程设计器,结果导致流程设计一直停留在CS阶段. 比方我之前做过的一个OA项目.项目中採用的就是Jbpm3.因为它不支持在浏览器中的图形 ...

  3. Linux系统编程——进程间通信:信号中断处理

    什么是信号? 信号是 Linux 进程间通信的最古老的方式.信号是url=474nN303T2Oe2ehYZjkrggeXCaJPDSrmM5Unoh4TTuty4wSgS0nl4-vl43AGMFb ...

  4. 计数排序、桶排序python实现

    计数排序在输入n个0到k之间的整数时,时间复杂度最好情况下为O(n+k),最坏情况下为O(n+k),平均情况为O(n+k),空间复杂度为O(n+k),计数排序是稳定的排序. 桶排序在输入N个数据有M个 ...

  5. C++ STL:vector

      不定长数组:vetor 它就像一个二维数组.仅仅是第一维的大小是固定的,可是第二维的大小不固定. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAx ...

  6. Spring MVC 注解式

    1.注解式控制器简介 一.Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类.已经@Deprecated.   二.Spring2.5引入注解式处理器支持,通 ...

  7. Google Nexus 5x Android 7.0 Root

    很久没有写东西了,准备重新养成这个好习惯.因为自己一直在用Nexus,前段时间自己的Nexus5老的不行了,所以买了台5x,一直没时间root,今天有时间终于有时间弄一下. 在这里整理分享一下. 开始 ...

  8. VMware下最小化安装centos 7 后上网设置

    1.文件/etc/sysconfig/network-scripts/ifcfg-eno16777736 将ONBOOT=no 改为 ONBOOT=yes 保存 2.重启网卡:service netw ...

  9. 新手教程:电信+广电(或其他运营商)双WAN设置

    由于国内不同运营商之间互联互通存在问题,假如用联通的线路去访问电信的站点那么会比较卡,反之亦然:所以如果两个WAN的线路不是同一个运营商,一般都是建议用户双WAN模式选为“智能路由”.经过本人测试发现 ...

  10. 今日SGU 5.19

    SGU 142 题意:给你一个长度为n的串(由a,b组成),让你找出一个串不是n的子串,长度最下 收获:思维题,思路在代码里 #include<bits/stdc++.h> #define ...