#面向对象编程:
'''
思想:角色的抽象,创建类,创建角色,
面对对象的关键字
class 类名:
静态属性 = ‘aaa'
def __init__(self):pass 类名.静态属性 ———存储在类的命名空间里
对象 = 类名() 实例化:创造了一个self对象,执行init方法,返回self对象给外部
类名.方法(对象)
对象.属性
对象.方法
对象可以使用静态变量
类不可用可以使用对象的属性
组合
一个类的对象是另外一个类对象的属性
什么是继承

# 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类
class ParentClass1: #定义父类
pass class ParentClass2: #定义父类
pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
pass
class A:pass
class B:pass class A_son(A,B):pass print(A_son.__bases__)
print(A.__bases__) (<class '__main__.A'>, <class '__main__.B'>)
(<class 'object'>,)
class Animal:
def __init__(self,name,aggr,hp):
self.name =name
self.aggr = aggr
self.hp =hp
class Dog(Animal):
def bite(self,persion):
persion.hp -= self.aggr
class Person(Animal):
pass
jin = Dog('金老板',200,500)
print(jin.name)
class Animal:
def __init__(self,name,aggr,hp):
self.name =name
self.aggr = aggr
self.hp =hp
def eat(self):
print('吃药回血')
self.hp+=100
class Dog(Animal):
def __init__(self,name,aggr,hp,kind):
Animal.__init__(self,name,aggr,hp)
self.kind =kind #派生属性
def bite(self,persion): #派生方法
persion.hp -= self.aggr
class Person(Animal):
def __init__(self,name,aggr,hp,sex):
Animal.__init__(self,name,aggr,hp)
self.sex =sex #派生属性
self.money = 0 #派生属性
def attack(self,dog):
dog.hp -= self.aggr
def get_weapon(self,weapon):
if self.money >= weapon.price:
self.money -= weapon.price
self.weapon = weapon
self.aggr += weapon.aggr
else:
print('余额不足,请先充值') alex = Person('alex',0.5,100,'不详')
jin = Dog('金老板',100,500,'不详')
print(jin.name)
jin.eat()
print(jin.hp)
print(alex.name)
alex = Person('alex',1,2,None)
alex.eat()
print(alex.hp)
jin.bite(alex)
print(alex.hp)
#父类中没有的属性,在子类中出现,叫做派生属性
# 父类中没有的方法,在子类中出现,叫做派生方法
# 只要是子类的对象调用,子类中有的名字,一定有子类的,子类中没有才找父类的,如果父类也没有报错
# 如果父类 子类都没有,用子类的
# 如果还想用父类的,单独调用父类的,需要自己穿self参数
class Animal:
def __init__(self,name,aggr,hp):
self.name =name
self.aggr = aggr
self.hp =hp
def eat(self):
print('吃药回血')
self.hp+=100
class Dog(Animal):
def __init__(self,name,aggr,hp,kind):
super().__init__(name,aggr,hp)
self.kind =kind #派生属性 jin = Dog('金老板',100,500,'teddy')
print(jin.name)
super(Dog,jin).eat()
金老板
吃药回血

# 如果还想用父类的,单独调用父类的,需要自己穿self参数

    父类名.方法名 需要自己穿self参数
super().方法名 不需要自己穿参数

class F:
def func(self):print('F')
class A(F):
pass
# def func(self):print('A')
class B(A):
pass
# def func(self):print('B')
class E(F):
pass
# def func(self):print('E')
class C(E):
pass
# def func(self):print('C')
class D(B,C):
pass
# def func(self):print('D')
d = D()
# d.func()
print(D.mro() [<class '__main__.D'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class '__main__.E'>, <class '__main__.F'>, <class 'object'>]
# 新式类中的继承顺序:广度优先
# 经典类 如果你直接创建一个类在2.7中就是经典类,深度优先
# 多集成中,我们子类的对象调用一个方法,默认是就近原则,找的顺序是:
# 经典类中 深度优先
# 新式类中,广度优先
# python2.7 新式类和经典类共存,新式类要继承object
# python3 只有新式类,默认继承object
# 经典类和新式类还有个区别 super mro方法只在新式类中存在
# super的本质:不是直接找父类,而是根据调用者的节点位置的广度优先位置顺序来的
class A(object):
def func(self):print('A')
class B(A):
def func(self):
super().func()
print('B')
class C(A):
def func(self):
super().func()
print('C')
class D(B,C):
def func(self):
super().func()
print('D')
d = D()
d.func() A
C
B
D


												

Python9-继承1-day24(大年初一)的更多相关文章

  1. 面向对象之继承(Day24)

    一.继承 1.什么是继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 2.继承与抽象(先抽象再继承) 抽象基抽取类似或 ...

  2. day24 02 单继承(派生)

    day24 02 单继承(派生) 1.首先来看一个简单的例子 比如: 狗类的属性有:吃,喝,看门 鸟类的属性有:吃,喝,下蛋 看门和下蛋就是这两种动物不同的属性,而吃喝是两个共同的属性 以下代码实现了 ...

  3. day24 01 初识继承

    day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...

  4. day24 03 多继承

    day24 03 多继承 正常的代码中  单继承==减少了代码的重复 继承表达的是一种 子类是父类的关系 1.简单的多继承关系 A,B,C,D四个类,其中D类继承A,B,C三个父类,因此也叫多继承,子 ...

  5. day24:继承

    1,复习1 # 面向对象编程 # 思想:角色的抽象,创建类,创建角色(实例化),操作这些示例 # 面向对象的关键字 class 类名: 静态属性 = 'aaa' def __init__(self): ...

  6. day24 面向对象,交互,组合,命名空间,初始继承

    面向对象的命名空间: #属性:静态属性 (直接和类名关联或者直接定义在class下的变量) # 对象属性 (在类内和self关联,在类外和对象名关联的变量) # 动态属性(函数) class Foo: ...

  7. day24类的继承

    类的继承1 什么是继承    继承一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类\基类\超类    python中继承的特点:        1. 子类可以遗传/重用父类的属性   ...

  8. day24 类的初始化、绑定方法、继承

    今日内容 1.初始化函数 2.绑定方法与非绑定方法 3.绑定方法的特殊之处 4.类的继承 一.初始化函数 1.什么是初始化函数 我们在使用类创建对象时,创建出来的对象都会拥有类中的属性和方法,但是每个 ...

  9. Spark Streaming揭秘 Day24 Transformation和action图解

    Spark Streaming揭秘 Day24 Transformation和action图解 今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和a ...

  10. python之路,Day24 常用设计模式学习

    python之路,Day24 常用设计模式学习   本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 ...

随机推荐

  1. CSS以及JS各种库的在线CDN引用地址

    JS类—— html5.js,让你的IE浏览器支持H5新特性:http://html5shiv.googlecode.com/svn/trunk/html5.js   (记得要注释判断哦) JQuer ...

  2. 异步加载js文件的方法

    # 异步加载js文件 - js的加载默认是同步的,因为js是单线程执行,只能完成一件再执行下一件. - 一些外部引入的js文件可以因为文件太大,在加载资源的过程中会影响dom元素的加载,影响了用户体验 ...

  3. @Results( 中 params 怎么用

    http://blog.csdn.net/z69183787/article/details/16342553 struts2的@Result annotation 如何添加params,并且在页面取 ...

  4. 转 DG switchover

    I. Pre-Switchover Checks These steps should be completed before the switchover planned maintenance w ...

  5. <?php } ?> 标记

    只是为了分离php 和html 代码的一种书写方法. 你要知道 一段程序代码 function fool(){//内容}是这么组成的那么当有html代码的时候就需要先暂时将php的开始部分给分开(不分 ...

  6. Web Scalability for Startup Engineers Tip&Techniques for Scaling You Web Application --读书笔记

    Web Scalability for Startup Engineers Tip&Techniques for Scaling You Web Application 第1章和第2章讲述可伸 ...

  7. [转]SqlServer索引的原理与应用

    索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录 ...

  8. Java MVC 增删改查 实例

    需求:实现增加新部门的功能,对应数据库表示Oracle的dept表 一.Java MVC 增 实现: 1.视图层(V):注册部门 deptAdd.jsp 在注册新部门页面只需输入“部门名称”和“城市” ...

  9. 遍历PspCidTable枚举进程

    //测试环境:win7 32位 1 // DriverEntry.cpp #include "ntddk.h" #include <ntddvol.h> #includ ...

  10. More helpful Cocos2d and Gaming macros

    More helpful Cocos2d and Gaming macros Here are w few macros that i wrote to make the code more read ...