当前位置: 首页 > news >正文

python全栈开发 * 19 面向对象 知识点汇总 * 180701

19 面向对象初识2 
一.类的名称空间
1.对象的名称空间
对象的名称空间中有类对象指针,对象可以通过"类对象指针"找类中的"静态变量"(静态字段),也可以用对象找类中的"方法名"(函数).
2.类的查询顺序
对象的查询顺序,先找"对象空间",如果没有,通过对象中"类对象指针"找"类名称空间"
3.对象的问题
无论创建多少对象都是开辟独立的空间,各个对象之间不能互相查找,干扰.
二.计算一个类实例化多少个对象
class Person:
level="高级动物"
mind="有思想"
stand="直立行走"
count=0 # 设置一个计数变量
def __init__(self,name,age):
Person.count=Person.count+1 # 设置一个计数器
self.name=name
self.age=age
def eat(self):
print("吃吃的爱")
aQ=Person("阿Q",30)
aP=Person("阿啤",26)
aF=Person('阿凡',27)
print(aQ.count) # 3

三.组合
1.定义
给一个类的对象封装一个属性,这个属性是一个类的对象.
2.模拟英雄联盟写一个游戏人物的类. (加武器)
要求:
(1)创建一个 Game_role的类.
(2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
(3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
例: 实例化一个对象 盖伦,ad为10, hp为100
实例化另个一个对象 剑豪 ad为20, hp为80
盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血, 还剩多少血'的提示功能.
class Game_role: #第一个类
def __init__(self,name,ad,hp):
self.name=name
self.ad=ad
self.hp=hp


def attack(self,other):
other.hp=other.hp-self.ad #剩余血量
print("%s攻击%s,%s掉了%s血,还剩%s血" %(self.name,other.name,other.name,self.ad,other.hp ))
def package_weapon(self,wea):
self.weapon = wea #给对象增加weapon属性
class Sword: #第二个类
def __init__(self,name,ad):
self.name=name
self.ad=ad
def fight(self,other1,other2):
other2.hp=other2.hp-double_edged.ad #剩余血量
print("%s用%s攻击%s,%s掉了%s血,还剩%s血" %(hero1.name,self.name,hero2.name,hero2.name,double_edged.ad,other2.hp))

hero1=Game_role("盖伦",100,500) #第一个类 实例化的第一个对象
hero2=Game_role("剑豪",250,800)  #第一个类 实例化的第二个对象
double_edged=Sword("宝剑",400) #第二个类 实例化的第一个对象

hero1.package_weapon(double_edged) #对象执行package_weapon方法给对象增加weapon属性
hero1.weapon.fight(hero1,hero2) #hero1.weapon对象查找对象的weapon属性 weapon的值为"double_edged"
double_edged是Sword类实例化的一个对象,对象执行fight方法需要传两个参数

转载于:https://www.cnblogs.com/J-7-H-2-F-7/p/9239730.html

相关文章:

  • replace 使用正则
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • 三菱加工中心CNC编程G代码讲解
  • MongoDB可视化工具--Robo 3T 使用教程
  • Php数据库
  • 项目集成springboot【JWordpres前台项目实战】
  • Sublime Text3 配置
  • ALTER SYSTEM ARCHIVELOG CURRENT挂起案例
  • Mblog 部署手册
  • iOS组件化(一):创建本地私有库
  • linux top 命令
  • HeyUI组件库发布vscode插件,PS教程: 如何开发vscode插件?
  • thinkphp3.2.3 定时任务重新加载, 无法加载新的定时任务的问题
  • PHP中使用Elasticsearch
  • WebView性能、体验分析与优化
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【剑指offer】让抽象问题具体化
  • CAP 一致性协议及应用解析
  • Codepen 每日精选(2018-3-25)
  • conda常用的命令
  • HTML-表单
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java-详解HashMap
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • laravel with 查询列表限制条数
  • LintCode 31. partitionArray 数组划分
  • Meteor的表单提交:Form
  • MySQL几个简单SQL的优化
  • PaddlePaddle-GitHub的正确打开姿势
  • SpringBoot几种定时任务的实现方式
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 彻底搞懂浏览器Event-loop
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 将回调地狱按在地上摩擦的Promise
  • 你不可错过的前端面试题(一)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​卜东波研究员:高观点下的少儿计算思维
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (27)4.8 习题课
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (论文阅读40-45)图像描述1
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (区间dp) (经典例题) 石子合并
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)nsfocus-绿盟科技笔试题目
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)利用webkit抓取动态网页和链接
  • ***检测工具之RKHunter AIDE