[Python]小甲鱼Python视频第038课(类和对象:继承 )课后题及参考解答

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 12 22:35:13 2019

@author: fengs
"""

"""
测试题:
0. 继承机制给程序猿带来最明显的好处是?
    提高代码复用,在不修改其他内容的情况下,只修改需要修改的方法或属性实现

1.如果按以下方式重写魔法方法 __init__,结果会怎样?
class MyClass:
    def __init__(self):
        return "I love FishC.com!"

构造函数的返回值只能是None

2. 当子类定义了与相同名字的属性或方法时,Python 是否会自动删除父类的相关属性或方法?
    不会删除,在子类中属性赋值会被覆盖,方法会被重写,在父类的对象中依然会存在父类的属性和方法

3. 假设已经有鸟类的定义,现在我要定义企鹅类继承于鸟类,但我们都知道企鹅是不会飞的,我们应该如何屏蔽父类(鸟类)中飞的方法?
    重写飞的方法,让飞的方法实际上的操作为不飞,覆盖行为

4. super 函数有什么“超级”的地方?
    可以父类的方法或引用父类的属性

5. 多重继承使用不当会导致重复调用(也叫钻石继承、菱形继承)的问题,请分析以下代码在实际编程中有可能导致什么问题?
class A():
    def __init__(self):
        print("进入A…")
        print("离开A…")

class B(A):
    def __init__(self):
        print("进入B…")
        A.__init__(self)
        print("离开B…")

class C(A):
    def __init__(self):
        print("进入C…")
        A.__init__(self)
        print("离开C…")

class D(B, C):
    def __init__(self):
        print("进入D…")
        B.__init__(self)
        C.__init__(self)
        print("离开D…")

A类的构造函数会被多次重复调用

6. 如何解决上一题中出现的问题?
    方法1.使用多次单重继承方法

    class A:

    class B(A):

    class C(B):

    class D(C):

    方法2.使用super().__init__()

"""

#测试题2
class Parent():
    def __init__(self):
        self.x = 1;
        self.y = 1;

    def print_var(self):
        print(‘Parent:self.x = %d,self.y = %d‘ % (self.x,self.y))

class Son(Parent):
    def __init__(self):
        super(Son,self).__init__()
        self.x = 2;
        self.y = 2;
    def print_var(self):
        print(‘Son:self.x = %d,self.y = %d‘ % (self.x,self.y))
    def super_print_var(self):
        super(Son,self).print_var()

#son = Son()
#son.super_print_var()
#son.print_var()

#测试题5
class A():
    def __init__(self):
        print("进入A…")
        print("离开A…")

class B(A):
    def __init__(self):
        print("进入B…")
        A.__init__(self)
        print("离开B…")

class C(A):
    def __init__(self):
        print("进入C…")
        A.__init__(self)
        print("离开C…")

class D(B, C):
    def __init__(self):
        print("进入D…")
        B.__init__(self)
        C.__init__(self)
        print("离开D…")
d = D()

"""
进入D…
进入B…
进入A…
离开A…
离开B…
进入C…
进入A…
离开A…
离开C…
离开D…
"""    

"""
0. 定义一个点(Point)类和直线(Line)类,使用 getLen 方法可以获得直线的长度。
""" 

class Point():
    def __init__(self,x = 0,y = 0):
        self.x = x
        self.y = y
    def getLoc(self):
        return (self.x,self.y)

class Line():
    def __init__(self,point_start,point_end):
        self.point_start = point_start
        self.point_end = point_end
    def getLen(self):
        start_loc = self.point_start.getLoc()
        end_loc = self.point_end.getLoc()

        distance = 0
        for i in range(2):
            distance += (start_loc[i] - end_loc[i])**2
        distance **= 0.5

        return distance

point_start = Point(1,3)
point_end = Point(1,-3)
line = Line(point_start,point_end)
print(line.getLen())

"""
1. 展示一个你的作品:你已经掌握了 Python 大部分的基础知识,要开始学会自食其力了!请花一个星期做一个你能做出来的最好的作品(可以是游戏、应用软件、脚本),使用上你学过的任何东西(类,函数,字典,列表……)来改进你的程序。
......
先寄下
"""

  

原文地址:https://www.cnblogs.com/alimy/p/10520317.html

时间: 2024-07-31 07:53:32

[Python]小甲鱼Python视频第038课(类和对象:继承 )课后题及参考解答的相关文章

[Python]小甲鱼Python视频第006课(Pyhon之常用操作符)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Mon Mar 4 23:18:54 2019 @author: fengs """ """ 测试题: 0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢? 1.0 1. a < b < c 事实上是等于? a<b and 2. 不使用 IDLE,你可以轻松说

[Python]小甲鱼Python视频第029课(文件:一个任务)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Fri Mar 8 14:34:39 2019 @author: Administrator """ """ 动动手: 0. 编写一个程序,接受用户的输入并保存为新的文件,程序实现如图: 1. 编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如图: 2. 编写一个程序,当用户输入文件名和

[Python]小甲鱼Python视频第030课(文件系统:介绍一个高大上的东西)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Fri Mar 8 15:49:32 2019 @author: Administrator """ """ 动动手: 0. 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: 1. 编写一个程序,计算当前文件夹下所有文件的大小,程序实现如图 2. 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在.如遇到文件

[Python]小甲鱼Python视频第2课(第一个游戏)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Mon Mar 4 11:19:54 2019 @author: Administrator """ """ 测试题: 0. 什么是BIF? 内置函数,已经写好的API,直接按规矩调用即可,不需要自己写的. 1. 用课堂上小甲鱼教的方法数一数 Python3 提供了多少个 BIF? 在Python命令行下,输入 bif_list_temp

[Python]小甲鱼Python视频第010课(列表:一个打了激素的数组)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Tue Mar 5 00:11:43 2019 @author: fengs """ """ 测试题: 0. 列表都可以存放一些什么东西? 各种基础数据类型,字符串,列表等等 1. 向列表增加元素有哪些方法? append insert extend 2. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有

[Python]小甲鱼Python视频第011课(列表:一个打了激素的数组2)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Tue Mar 5 22:28:59 2019 @author: fengs """ """ 测试题: 0. 下边的列表分片操作会打印什么内容? >>> list1 = [1, 3, 2, 9, 7, 8] >>> list1[2:5] 打印: [2,9,7] 1. 请问 list1[0] 和 list1

[Python]小甲鱼Python视频第012课(列表:一个打了激素的数组3)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Tue Mar 5 22:43:25 2019 @author: fengs """ """ 测试题: 0. 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案. >>> old = [1, 2, 3, 4, 5] >>> new = old >>> old = [6]

[Python]小甲鱼Python视频第013课(元组:戴上了枷锁的列表)课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Tue Mar 5 23:05:40 2019 @author: fengs """ """ 测试题: 0. 请用一句话描述什么是列表?再用一句话描述什么是元组? 列表:有序且可变的数据集合 元组:有序且不可变的数据集合 1. 什么情况下你需要使用元组而不是列表? 数据已经确定无需修改 2. 当元组和列表掉下水,你会救谁? ...... 3

[Python]小甲鱼Python视频第040课(类和对象:一些相关的BIF )课后题及参考解答

# -*- coding: utf-8 -*- """ Created on Tue Mar 12 23:36:51 2019 @author: fengs """ """ 0. 如何判断一个类是否为另一个类的子类? issubclass(A,B) A是B的子类就返回True 1. 如何判断对象 a 是否为 类 A 的实例对象? isinstance(a,A) 2. 如何优雅地避免访问对象不存在的属性(不产生异常)?