day24 01 初识继承
day24 01 初识继承
面向对象的三大特性:继承,多态,封装
一、继承的概念
继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类
class A: # 父类,基类,超类
pass
class B: # 父类,基类,超类
pass
class A_son(A,B): # 子类,派生类
pass
class AB_son(A,B): # 子类,派生类
pass
- 一个类可以被多个类继承,先有父类才有子类
- 一个类可以继承多个父类----只在python里面才可以,其他语言不可以
注意:从父类不能知道自己将会被哪个类继承,但是从子类肯定可以知道自己的父类,这是从子类像父类指向单方向线程
二、父类的查看方法
类似于对像可以使用_dict_方法查看属性,子类也可以使用_bases_方法查看它的父类
class A: # 父类,基类,超类
pass
class B: # 父类,基类,超类
pass
class A_son(A): # 子类,派生类
pass
class B_son(A,B): # 子类,派生类
pass
class AB_son(A,B): # 子类,派生类
pass
print(A_son.__bases__)
print(B_son.__bases__)
print(AB_son.__bases__)
print(A.__bases__)
print(B.__bases__)
运行结果:
C:\Users\sku1-1\PycharmProjects\untitled\venv\Scripts\python.exe "C:/Users/sku1-1/PycharmProjects/untitled/day24 01 初识继承.py"
(<class '__main__.A'>,)
(<class '__main__.A'>, <class '__main__.B'>)
(<class '__main__.A'>, <class '__main__.B'>)
(<class 'object'>,)
(<class 'object'>,) Process finished with exit code 0
从上面的运行结果可以看到,特别的父类A和B的父类都是‘object’,如果没有继承父类,就默认继承‘object’,这也是python3的新式类
三、继承表达的关系:什么是什么的关系
只有是两个类之间才会产生继承的关系,两个类之间存在一些共同的抽象的东西,将这些共同的东西抽象出来就可以成为这两个类的父类
以之前的人狗大战的游戏为例,里面的人物角色与狗的角色,定义它们的类的时候,里面有一些属性是相同的,比如:name,blood,aggr,而且狗和人都是动物,这样就可以抽象出它们的父类---animal,参考以下代码:
class animal: # 父类
def __init__(self,name,blood,aggr):
self.name=name
self.blood=blood
self.aggr=aggr
class dog(animal): # 子类
def bite(self,someone):
someone.blood-=self.aggr
class someone(animal): # 子类
def attack(self,dog):
dog.blood -=self.aggr dog1 = dog('溜溜球',200,500)
print(dog1.name)
person1 = someone('王昭君',300,500)
print(person1.name)
运行结果:
溜溜球
王昭君
day24 01 初识继承的更多相关文章
- python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)
一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...
- TensorFlow --- 01初识
由于博客园对Markdown支持不够友好,阅读此文请前往云栖社区:TensorFlow --- 01初识
- day24 02 单继承(派生)
day24 02 单继承(派生) 1.首先来看一个简单的例子 比如: 狗类的属性有:吃,喝,看门 鸟类的属性有:吃,喝,下蛋 看门和下蛋就是这两种动物不同的属性,而吃喝是两个共同的属性 以下代码实现了 ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- day24 03 多继承
day24 03 多继承 正常的代码中 单继承==减少了代码的重复 继承表达的是一种 子类是父类的关系 1.简单的多继承关系 A,B,C,D四个类,其中D类继承A,B,C三个父类,因此也叫多继承,子 ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
随机推荐
- Codeforces Round #431 (Div. 2) B
Connect the countless points with lines, till we reach the faraway yonder. There are n points on a c ...
- python的入门1(补发)
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- NET Core 2.0 in Docker on Windows Containers
安装Docker for Windows https://store.docker.com/editions/community/docker-ce-desktop-windows 要想将一个ASP. ...
- 爬虫(cookie)——renren模拟登陆
工具:python3 步骤: 1)使用cookiejar.CookieJar()构建一个CookieJar()构建一个对象,用来保存cookie的值 2)使用HTTPCookieProcessor() ...
- Hart协议
官方https://fieldcommgroup.org/technologies/hart/documents-and-downloads-hart 参考网页http://www.eeworld.c ...
- Emacs中自动刷新dired缓冲区
Emacs中自动刷新dired缓冲区 在dired模式中,如果在不同buffer间切换,buffer不会自动更新,有时还需要手工按“g”键,比较麻烦,如下设置和代码能够在buffer切换和执行shel ...
- 【Unity3D】魔鬼与牧师游戏记录——MVC架构
Priests and Devils是一款益智类的小游戏,需要在规定的时间内帮助牧师和魔鬼都安全过河.河边有三个魔鬼和三个牧师,他们都想过河,但河上只有一条船,这艘船每次只能搭载两个,而且必须有一个人 ...
- session会话
jsp会话篇session: package com.log; import java.io.IOException; import java.util.ArrayList; import java. ...
- MFC CDialog/CDialogEx DoModal ALT
Questions: I'm using MFC CDialog/CDialogEx to show a modal dialog with DoModal.usually it works with ...
- Protocol Buffer学习教程之开篇概述(一)
1. Protocol Buffer是什么 Protocol Buffer是google旗下的产品,用于序列化与反序列化数据结构,但是比xml更小.更快.更简单,而且能跨语言.跨平台.你可以把你的数据 ...