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方法需要传两个参数

python全栈开发 * 19 面向对象 知识点汇总 * 180701的更多相关文章

  1. python全栈开发 * 23 面向对象 知识点汇总 * 180704

    23 面向对象 -----特殊方法 1. isinstance(obj,类名) 判断对象是否是此类实例化或者此类的子类实例化出来的class A:passclass B(A):passb1=B()pr ...

  2. python全栈开发 * 22 面向对象 知识点汇总 * 180703

    22 面向对象 -----属性,类方法,静态方法,反射一.属性1.属性的定义:将方法伪装成属性,虽然在代码层面上没有任何高深之处,但让其看起来更合理. (类似于属性的方法)class Person: ...

  3. python全栈开发 * 18 面向对象知识点汇总 * 180530

    18 面向对象初识1class person: level="高级动物" mind="有思想" def __init__(self,name,age,gent, ...

  4. python全栈开发 * 20 继承知识点汇总 * 180530

    20 面向对象的三大特征之一(继承,多态,封装) -----继承 1.继承的定义: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类;父类又可称为基类或超类,新建的类称为派生 ...

  5. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  6. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  7. Python 全栈开发七 面向对象

    一.编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式 ...

  8. 巨蟒python全栈开发django9:一些知识点的汇总

    回顾上周内容: 题目: 1.人民出版社出版过的所有书籍的名字以及作者的姓名(三种写法,笔记中有两种写法) 2.手机以2开头的作者出版过的所有书籍名称以及出版社名称(三种写法,笔记中有1种写法) 1.聚 ...

  9. python全栈开发day21面向对象初识总结

随机推荐

  1. protobuf的简单使用

    操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 go 版本 : go1.8.3 linux/amd64 Python 版本 : 2.7.5 libprotoc : 2.5 ...

  2. Python之多线程和多进程

    一.多线程 1.顺序执行单个线程,注意要顺序执行的话,需要用join. #coding=utf-8 from threading import Thread import time def my_co ...

  3. Effective Java 第三版——79. 避免过度同步

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  4. Mathematica新特性Inactive, 求解复杂微分方程

    Inactive阻止函数的计算, 求解微分方程有奇效 Block[{Integrate = Inactive[Integrate]}, DSolve[((H - h0)^(7/5) P0 (T - c ...

  5. 您还差宝贝一张语文教学光盘!教你如何制作ISO文件

    1 大家没有发现 宝宝初上小学无法专心地做作业.读书? 我家的宝贝就是这样 做作业时 总是东搞搞,西弄弄 完全无法专心 再不就是不耐心 读一遍课本就觉得累 读三两遍就说学习是个苦差事儿 2 一直以来 ...

  6. Android 看源码学 Binder

    参考:https://jekton.github.io/2018/04/07/binder-why-RemoteListenerCallback-works/ 参考:https://jekton.gi ...

  7. django聚合查询

    聚合¶ Django 数据库抽象API 描述了使用Django 查询来增删查改单个对象的方法.然而,有时候你需要获取的值需要根据一组对象聚合后才能得到.这份指南描述通过Django 查询来生成和返回聚 ...

  8. webpack打包css

    1.第一种方式 1.安装css-loader和style-loader $ cnpm install css-loader style-loader --save-dev 2.引用的时候使用css-l ...

  9. idea checkout 项目

    1. 2.添加一个连接 选择远程目录checkout  , 然后选择本地目录   但是这样会创建一个新的projectwindow  如果要创建为module的话  1.手动引入从svn check的 ...

  10. [C++]Qt程式异常崩溃处理技巧(Win)

    文章转载来自     http://www.cnblogs.com/lcchuguo/p/5177715.html     作者 lcchuguo https://blog.csdn.net/baid ...