#面向对象编程:
'''
思想:角色的抽象,创建类,创建角色,
面对对象的关键字
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. 利用arguments对象在javaScript中实现重载(overload)

    一些概念: 重载(overload): 什么是: 相同函数名,不同参数列表的多个函数,在调用时,可根据传入参数的不同,自动选择对应的函数调用! 为什么: 减轻调用者的负担,一个函数名,可执行多种操作 ...

  2. 面向对象多继承(C3算法)/网络编程

    https://www.cnblogs.com/aylin/p/5572104.html 一.面向对象多继承(c3算法) a.有多个父类先找左,再找右,如下示例: class A(object): p ...

  3. [已读]高性能JavaScript

    值得多读几遍的书.

  4. [已读]悟透JavaScript

    这本书出的特别早,就第一部分内容还行,第一次看得时候觉得蛮有意思,讲禅的方式来讲javascript,作者造了一个"甘露模型"来实现继承,不过今天整理的时候,发现那些笔记都没多少可 ...

  5. 60分钟课程: 用egg.js实现增删改查,文件上传和restfulApi, webpack react es6 (一)

    今天开始我将写nodejs框架egg.js, react 实现的增删改查,文件上传等常用的b/s场景,这个将分3部分来写. 会让你在60分钟内快速 入口并应用~  你应该用es6, node,或是ph ...

  6. 微信小程序---图片上传+服务端接受

    原文地址:http://blog.csdn.net/sk719887916/article/details/54312573 微信小程序,图片上传,应用地方-修改用户信息的头像. 详细代码: 小程序的 ...

  7. centos6.3下postgresql-9.3安装记录

    Xshell for Xmanager Enterprise 4 (Build 0186) Copyright (c) 2002-2011 NetSarang Computer, Inc. All r ...

  8. vue+webpack+VS Code入门简单的项目配置

    为了方便,这边的编译器选择的是VS Code (Visual Studio Code); 打开VS Code,选择好自己的工作空间,然后新建一个文件夹作为我们项目的文件夹,然后,show time: ...

  9. 【读书笔记】构建之法(CH1~CH3)

    人类文明的发展离不开哲学家的思考.科学家的发现和工程师的构建.三个简单的方程式解释了什么是现代软件工程: 1.程序=算法+数据结构 2.软件=程序+软件工程 3.软件企业=软件+商业模式 软件开发的不 ...

  10. PHP小数处理常用函数

    1.php保留两位小数并且四舍五入 $num = 123213.666666; echo sprintf("%.2f", $num); // 123213.67echo round ...