习题44 继承和组合

学习目标:

ex44.py


学习内容:

class Parent(object):

    def override(self):
        print("PARENT override()")
#类Parent有一个函数override以self为参数
    def implicit(self):
        print("PARENT implicit()")
#类Parent有一个函数implicit以self为参数
    def altered(self):
        print("PARENT altered()")
#类Parent有一个函数altered以self为参数
class Child(Parent):
#创建一个Child的类,它是Parent的一种
    def override(self):
        print("PARENT override()")
#Child中定义一个同名的函数override,显示覆盖
    def altered(self):
        print("CHILD, BEFORE PARENT altered()")
        super(Child, self).altered()
        print("CHILD,AFTER PATENT altered()")
#PARENT altered()
#CHILD, BEFORE PARENT altered()
#PARENT altered()
#CHILD,AFTER PATENT altered()
#1.由于我覆盖了 Parent.altered,实际运行的是 Child.altered
#18行执行结果22
#2.super来获取Parent.altered这个版本,这里我想在前面和后面加一个动作
#3.19行调用了 super(Child, self).altered(),它还知道你的继承关系,并且会访问到 Parent类
#这句你可以读作:“用 Child 和 self 这两个参数调用 super,然后在此返回的基础上调用 altered
#4.到这里函数的 Parent.altered 版本就会运行,而且打印出了 Parent 里的消息
#19行执行结果23
#5.最后,从 Parent.altered 返回, Child.altered 函数接着打印出后面的消息
#20行执行结果24
dad = Parent()
son = Child()

dad.implicit()
son.implicit()
#隐式继承,Parent中定义的函数implicit
dad.override()
son.override()

dad.altered()
son.altered()

学习时间:

2023.6.20


学习产出:

ex44.py

你可能感兴趣的:(python,python)