首页 > 编程语言 >Python基础入门学习笔记 038 类和对象:继承

Python基础入门学习笔记 038 类和对象:继承

时间:2023-08-23 10:44:39浏览次数:40  
标签:shark 入门 Python 子类 self move 038 父类 class

继承

                  子类                              父类

class DerivedClassName(BaseClassName):

……

实例:一个子类可以继承它的父类的所有属性和方法

 1 >>> class Parent:
 2     def hello(self):
 3         print('正在调用父类的方法。。。')
 4 
 5         
 6 
 7 >>> class Child(Parent):    #子类继承父类
 8     pass     #直接往下执行
 9 
10 >>> p = Parent()
11 >>> p.hello()
12 正在调用父类的方法。。。
13 >>> c = Child()
14 >>> c.hello()
15 正在调用父类的方法。。。

如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法和属性(即子类方法属性改变,父类是不变的)

 1 >>> class Child(Parent):
 2     def hello(self):
 3         print('正在调用子类的方法')
 4 
 5         
 6 >>> c = Child()
 7 >>> c.hello()
 8 正在调用子类的方法
 9 >>> p.hello()
10 正在调用父类的方法。。。

实例2:

 1 import random as r
 2 class Fish:
 3     def __init__(self):
 4         self.x = r.randint(0,10)
 5         self.y = r.randint(0,10)
 6 
 7     def move(self):
 8         self.x -= 1
 9         print('我的位置是:',self.x,self.y)
10 
11 
12 class Goldfish(Fish):
13     pass
14 
15 class Garp(Fish):
16     pass
17 
18 class Shark(Fish):
19     def __init__(self):
20         self.hungry = True
21 
22     def eat(self):
23         if self.hungry:
24             print('吃货的梦想就是天天有的吃')
25             self.hungry = False
26         else:
27             print('太撑了,吃不下了!')
28 
29 >>> fish = Fish()
30 >>> fish.move()
31 我的位置是: -1 10
32 >>> fish.move()
33 我的位置是: -2 10
34 >>> goldfish = Goldfish()
35 >>> goldfish.move()
36 我的位置是: 2 3
37 >>> goldfish.move()
38 我的位置是: 1 3
39 >>> shark = Shark()
40 >>> shark.eat()
41 吃货的梦想就是天天有的吃
42 >>> shark.eat()
43 太撑了,吃不下了!
44 >>> shark.move()    #报错原因时因为子类重写构造函数,覆盖了父类D的构造函数
45 Traceback (most recent call last):
46   File "<pyshell#9>", line 1, in <module>
47     shark.move()
48   File "D:\python3.3.2\小甲鱼python\python程序\第三十八节课\fish.py", line 8, in move
49     self.x -= 1
50 AttributeError: 'Shark' object has no attribute 'x'

注:继承父类属性的子类,其变量值只属于当前子类,是子类的局部变量

报错修改部分解决方法一:调用未绑定的父类方法

>>> shark = Shark()
>>> shark.move()
我的位置是: 2 1
>>> shark.move()
我的位置是: 1 1

报错修改部分解决方法二:使用super函数(super函数会帮我们自动找到基类的方法,而且还自动为我们传入self参数)

>>> shark = Shark()
>>> shark.move()
我的位置是: 1 1
>>> shark.move()
我的位置是: 0 1

多重继承

class DerivedClassName(Base1, Base2, Base3):

……

实例:子类c同时继承基类Base1和基类Base2

 1 >>> class Base1:
 2     def fool1(self):
 3         print('我是fool1,我为Base1代言。。。')
 4 
 5         
 6 >>> class Base2:
 7     def fool2(self):
 8         print('我是fool2,我为Base2代言。。。')
 9 
10         
11 >>> class C(Base1,Base2):
12     pass
13 
14 >>> c = C()
15 >>> c.fool1()
16 我是fool1,我为Base1代言。。。
17 >>> c.fool2()
18 我是fool2,我为Base2代言。。。

 

标签:shark,入门,Python,子类,self,move,038,父类,class
From: https://www.cnblogs.com/ybqjymy/p/17650578.html

相关文章

  • Python基础入门学习笔记 036 类和对象:给大家介绍对象
    给大家介绍对象把乱七八糟的数据扔进列表里,称数据层面的封装把常用的代码段打包成一个函数,称语句层面的封装把数据和代码都封装在一起,称对象层面的封装对象 = 属性 + 方法对象可以从静态(属性)与动态(方法)两个特征来描述 OO(面向对象)的特征继承class Turtle:#Pytho......
  • Python基础入门学习笔记 037 类和对象:面向对象编程
    self是什么?Python的self其实就相当于C++的this指针。由同一个类可以生产无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就知道需要操作哪个对象的方法了。1>>>classBall:2defsetName(self,name):3self......
  • Python基础入门学习笔记 032 异常处理:你不可能总是对的
    实例1:1file_name=input('请输入需要打开的文件名:')2file=open(file_name)3print('文件的内容是:')4foreach_lineinfile:5print(each_line)6file.close() Python标准异常总结 以下是Python内置异常类的层次结构:......
  • Python基础入门学习笔记 033 异常处理:你不可能总是对的2
    try-except语句try:  检测范围exceptException[asreason]:  出现异常(Exception)后的处理代码实例1:1try:2f=open('TE.txt')3print(f.read())4f.close()5exceptOSError:6print('文件打开过程中出错了!!!')实例2:1try:2f=open(......
  • 1.C++入门以及简单顺序结构题目
    1.C++入门以及简单顺序结构题目1.交换值【题目描述】输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)。【输入】输入两个正整数a和b。【输出】输出a与b交换值后的结果。【输入样例】23【输出样例】32inta=2,b=3,c;cin>>a>>b;c=a;a=b;b=c;cout<<a......
  • C++入门及简单程序结构题目
    C++入门及简单顺序结构题目1.交换值【题目描述】输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)。【输入】输入两个正整数a和b。【输出】输出a与b交换值后的结果。【输入样例】23【输出样例】32inta,b,c;cin>>a>>b;c=a;a=b;b=c;printf("%d%d",......
  • 1.C++入门以及简单顺序结构题目
    1.C++入门以及简单顺序结构题目™1.交换值【题目描述】输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)。【输入】输入两个正整数a和b。【输出】输出a与b交换值后的结果。【输入样例】23【输出样例】32inta,b;cin>>a>>b;printf("%d%d",b,a);2.整......
  • Python基础入门学习笔记 034 丰富的else语句及简洁的with语句
    丰富的else语句•要么怎样,要么不怎样if条件:  条件为真执行else:  条件为假执行    •干完了能怎样,干不完就别想怎样实例1:1defshowMaxFactor(num):2count=num//2#//为整除,判断是素数,只需依次判断当前数num除以1到(num//2)都不能整除即可3......
  • Python基础入门学习笔记 027 集合:在我的世界里,你就是唯一
    字典的表亲--集合(在python3中,如果用大括号括起一堆数字但没有体现映射关系,那么就会认为这堆玩意儿就是个集合)1>>>num1={}2>>>type(num1)3<class'dict'>4>>>num2={1,3,4}5>>>type(num2)6<class'set'>集合中的元素都是唯一的(集合会自动帮我们把......
  • Python基础入门学习笔记 028 文件:因为懂你,所以永恒
    大多数u程序都是:首先接收输入数据,然后按照要求进行处理,最后输出数据 虽然当前数据放在内存中存取的速度要比硬盘中快,但一旦断电则会丢失,所以尽量ctrl+s保持到硬盘中 什么是文件打开文件1open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,......