1.25 Python知识进阶 - 封装
封装
示例代码:
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.23 Python知识进阶 - 面向对象编程
一.编程方法 1.函数式编程:"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论.它属于"结构化 ...
- 1.26 Python知识进阶 - 继承
继承 继承(Inheritance)是面向对象的程序设计中代码重要的主要方法.继承是允许使用现有类的功能,并在无需重新改写原来的类的情况下,对这些功能进行扩展.继承可以避免代码复制和相关的代码维护等问 ...
- 1.24 Python知识进阶 - 类与对象
类 语法格式: class Dog(object): print("the dog is barking ...") Dog为类名,object为要继承的基类,Dog类会从基类ob ...
- 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器
第四章 基础知识进阶第十七节 迭代.可迭代对象.迭代器 一. 引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本节 ...
- Python进阶-XVII 非python的接口类、多态、python自己的封装
1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...
- Python爬虫进阶一之爬虫框架概述
综述 爬虫入门之后,我们有两条路可以走. 一个是继续深入学习,以及关于设计模式的一些知识,强化Python相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展.另一条路便是学习一些优 ...
- python最全学习资料:python基础进阶+人工智能+机器学习+神经网络(包括黑马程序员2017年12月python视频(百度云链接))
首先用数据说话,看看资料大小,达到675G 承诺:真实资料.不加密,获取资料请加QQ:122317653 包含内容:1.python基础+进阶+应用项目实战 2.神经网络算法+python应用 3.人 ...
- python学习大全:python基础进阶+人工智能+机器学习+神经网络
首先用数据说话,看看资料大小,达到675G承诺:真实资料.不加密.(鉴于太多朋友加我QQ,我无法及时回复,) 方便的朋友给我点赞.评论下,谢谢!(内容较大,多次保存) [hide]链接:[url]ht ...
- Python爬虫进阶四之PySpider的用法
审时度势 PySpider 是一个我个人认为非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇内容通过跟我做一个好玩的 ...
随机推荐
- 洛谷 P3419 [POI2005]SAM-Toy Cars
P3419 [POI2005]SAM-Toy Cars 题目描述 Johnny is a little boy - he is only three years old and enjoys play ...
- 如何下载最新版的 Adobe Flash Player
如何下载最新版的 Adobe Flash Player 中国访客用代理访问下面的链接,否则会自动跳转到 https://www.flash.cn/ 当我们从 https://get.adobe.com ...
- Ubuntu 16.04/18.04 LTS改变时区和语言
Ubuntu 16.04/18.04 LTS改变Timezone时区设定原文 https://www.phpini.com/linux/ubuntu-16-04-change-timezone-set ...
- Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’解决方法
原因在于/tmp/mysql/mysql.sock不存在,为/usr/local/mysql/mysql.sock建立一个软连接到/tmp/mysql/mysql.sock即可. ln -s /usr ...
- 16.C语言可变参数
//可变参数实现多个参数求和 1 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> ...
- AnkhSvn介绍 插件
转载:http://www.cnblogs.com/lyhabc/articles/2483011.html AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交.更新 ...
- C# Dapper 基本使用 增删改查事务等
using DapperTest.Models; using System.Collections.Generic; using System.Web.Http; using Dapper; usin ...
- Python基础班培训视频课程
课程目录:│ ├─第01天视频│ │ 01-课程介绍.avi│ │ 02-什么是操作系统.avi│ │ 03-生活中的操作系统.avi│ │ 04-操 ...
- IDEA全局更改统一编码为utf-8
File -> Other Settings->Deaault Settings->Settings->File Encodings -> Defaule encodin ...
- HOJ——T 2275 Number sequence
http://acm.hit.edu.cn/hoj/problem/view?id=2275 Source : SCU Programming Contest 2006 Final Time li ...