第13关精华笔记

类的继承和定制

1、类的继承(复制)

类的继承,即让子类拥有了父类拥有的所有属性和方法



2、类的定制(复制后自己看着改)

子类也可以在继承的基础上进行个性化的定制,包括:

  • 创建新属性、新方法
  • 修改继承到的属性或方法

继承的编写规则

1、继承的基础语法

选择语言
class A():
name='七七'
class B(A):
pass

以上代码的第 3 行, class B(A) 就是我们的继承语句,其中 B 是子类, A 代表着我们的父类。





我们的子类继承了父类,那就是说,父类的所有东西,我们子类都可以拿来用,下面我们来看一下例子:

选择语言
class A():
name='七七'
class B(A):
pass
b=B()
print(b.name)

我们父类 A 定义了变量 name 并赋值延君,而子类 B 继承了 A 但是什么都没操作(pass),我们实例化函数 B 后,实例化对象 b 可以调用我们父类 A 中的 name 属性。





2、类的多层继承

继承不仅可以发生在两个层级之间(即父类-子类),还可以有父类的父类、父类的父类的父类……

选择语言
class shanjiao():
teacher1='七七'
class shanyao(shanjiao):
teacher2='延君'
class shanding(shanyao):
teacher3='卡西'
tea = shanding()
print(tea.teacher1)
print(tea.teacher2)

上面例子中,类 shanyao 继承了类 shanjiao,类 shanding 再继承了类 shanyao ,即类 shanding 继承了前面两个的所有属性,所以可以正常打印出我们的“七七”、“延君”。

3、类的多重继承

一个类,可以同时继承多个类,语法为 “class A(B,C,D):” 。和子类更相关的父类会放在更左侧,子类创建的实例在调用属性和方法时,会先在左侧的父类中找,找不到才会去右侧的父类找。(可理解为“就近原则”)

选择语言
class shanjiao():
teacher='七七'
class shanyao():
teacher='延君'
class shanding():
teacher='卡西'
class main(shanyao,shanjiao,shanding):
pass
tea = main()
print('助教'+tea.teacher+'最帅')

以上代码中,类 main 同时继承了我们的类 shanjiao、shanyao、shanding,而根据我们的“就近原则”,我们在调用属性 teacher 的时候,类 shanyao 离我们的子类最近且有定义该类,所以打印出来的结果为 “助教延君最帅”。





定制的编写规则

1、新增代码

在子类下新增属性或方法,让子类可以用上父类所没有的属性或方法。这种操作,属于定制中的一种:新增代码

选择语言
class A():
name='延君'
def Face(self):
print('帅')
class B(A):
work='助教'
def Age(self):
print('年轻')
b=B()
print(b.name)
print(b.work)
b.Face()
b.Age()

以上代码中,类 B 继承了类 A ,我们实例化了类 B 后,可以调用父类的属性和方法外,也可以给子类新增子类的属性和方法。

2、重写代码

①、重写代码,是在子类中,对父类代码的方法修改:

选择语言
class A():
def Day(self):
print('昨天是day2')
class B(A):
def Day(self):
print('今天是day3')
a=A()
b=B()
a.Day()
b.Day()

以上代码中,我们子类 B 继承了父类 A,并且重写了方法 Day,即我们用类 B 的实例化对象去调用方法 Day 的时候,会打印出 “今天是day3”。

②、在子类中,对父类代码的实例化属性修改:

选择语言
class A():
def __init__(self,name='卡西'):
self.name=name
def Name(self):
print('我的名字是'+self.name)
class B(A):
def __init__(self,name='延君'):
A.__init__(self,name)
b=B()
b.Name()

以上代码中,我们子类 B 继承了父类 A,调用父类的初始化函数后,重新给参数 name 赋值,再给这个 name 给实例化对象 name,具体传参路线如下:





(0)

相关推荐

  • Python继承机制及其使用

    Python类的封装.继承.多态3大特性,前面章节已经详细介绍了Python类的封装,本节继续讲解Python类的继承机制. 继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上 ...

  • 第18关精华笔记

    第18关精华笔记pdf版--同学记得打开电脑浏览器下载哦!  第18关精华笔记.pdf 0.3MB  本关的主要目的,是让大家在代码的设计上更有框架条理. 先把功能框架理清,再丰富每个部分的细节. ...

  • 第17关精华笔记

    第17关精华笔记pdf版--同学记得打开电脑浏览器下载哦! 第17关精华笔记.pdf 0.6MB  代码功能块拆解 登录邮箱 用户与授权码 smtp-邮件发送对象的构造 新建并编辑邮件 发送邮件并 ...

  • 第16关精华笔记

    第15关精华笔记pdf版--同学记得打开电脑浏览器下载哦! 第16关精华笔记.pdf 0.4MB  什么是模块 最高级别程序组织单元,通常我们调用的模块都是写好的py文件,里面有各种变量,函数,类 ...

  • 第15关精华笔记

    第15关精华笔记pdf版--同学记得打开电脑浏览器下载哦!  副本_第15关精华笔记.pdf 0.4MB  什么是编码? 计算机只认识0和1,为了更好的交流,这种从人类语言到计算机语言转换的形式, ...

  • 第19关精华笔记

    第19关精华笔记pdf版--同学记得打开电脑浏览器下载哦!  第19关精华笔记.pdf 0.2MB  项目解示 代码一: import csv #调用csv模块 with open('assets ...

  • 教研组长提炼初中英语语法13个模块笔记 100组核心短语|次次第一

    不仅小学英语语法内容重点且难理解,初中语法难度更大,知识点也变多,需要同学们花大量时间理解,但其内容并不好理解,就这一点劝退了很多同学,让同学们对英语出现了懈怠情绪,其实语法的学习只有两大问题:一是难 ...

  • 初中英语精华笔记

    A 1 (see .hear .notice .find .feel .listen to . look at (感官动词)+do  eg:I like watching monkeys jump.  ...

  • 伤寒论精华笔记

    <伤寒论> 1. 我国第一部辨证论治的专书是--东汉末年伟大的医学家张仲景(张机)所著的 <伤寒论>.奠定了辨证论治的基础,它的出现标志着辨证论治理论体系的确立. 2. 被后人 ...

  • 《忍经》中的13句精华,上善若水,水善利万物而不争

    《忍经》中的13句精华,上善若水,水善利万物而不争