最简单的继承

python 的继承是在类名的后面添加括号, 然后在括号中声明要继承的父类.


class Father:
    def speak(self):
        print("我是父类中的 speak 方法")


# Son继承 Father 类  
class Son(Father):
    pass


s = Son()
s.speak()

说明:

  1. 从字面上我们看到Son没有定义任何的方法, 但是由于Son继承自Father, 则Son会继承Father的所有属性和方法

  2. 调用方法时, 方法的查找规则: 先在当前类中查找, 当前类找不到想要的方法, 则去父类中查找, 还找不到然后继续向上查找. 一旦找到则立即执行. 如果找到最顶层还找不到, 则会抛出异常


继承中的__init__()的调用规则

如果子类没有手动__init__()方法, 则 python 自动调用子类的__init__()的时候, 也会自动的调用基类的__init()__方法.

class Father:
    def __init__(self):
        print("基类的 init ")


# Son继承 Father 类
class Son(Father):
    def speak(self):
        pass


s = Son()


如果子类手动添加了__init__(), 则 python 不会再自动的去调用基类的__init__()

class Father:
    def __init__(self):
        print("基类的 init ")


# Son继承 Father 类
class Son(Father):
    def __init__(self):
        print("子类的 init ")

    def speak(self):
        pass


s = Son()


如果想通过基类初始化一些数据, 则必须显示的调用这个方法, 调用语法是: 基类名.__init__(self, 参数...)

class Father:
    def __init__(self, name):
        print("基类的 init ")
        self.name = name

    def speak(self):
        print("我是父类中的 speak 方法" + self.name)


# Son继承 Father 类
class Son(Father):
    def __init__(self, name, age):
        # name 属性的初始化应该交给基类去完成, 手动调用基类的方法. 一般放在首行
        Father.__init__(self, name)  # 调动指定类的方法, 并手动绑定这个方法的 self
        print("子类的 init ")
        self.age = age


s = Son("李四", 20)
s.speak()
print(s.name)
print(s.age)


Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""