写点什么

Python 继承还不会,看这篇就够了

  • 2022-10-21
    广东
  • 本文字数:1139 字

    阅读完需:约 1 分钟

前言

说到面向对象,大家都不陌生。在 python 中,一切皆对象,我们使用类来表示具有相同属性和方法的对象的集合。而继承则是一种创建新类的方式,这个新类可以使用被继承类的属性。今天就来说说 python 中的继承。

继承的概念

继承用于类的创建上,新创建的叫子类,而被继承的叫做父类。子类可以使用父类属性,继承是描述类与类之间的关系。


为什么要用继承呢?因为继承可以减少代码的冗余以及提高代码的重用性。我们在工作中,用到继承的地方很多。

继承的种类

python 里继承总共有单继承、多继承和多层继承。

单继承

单继承指的是子类只继承一个父类。示例:


class A():    def __init__(self):        self.a = 'a'
def test_a(self): print("aaaa")
class B(A): def __init__(self): self.b = 'b'
def test_b(self): self.test_a() print("bbbb")

obj = B()obj.test_b()
复制代码


例子中,B 类只继承 A 类的方法。在 B 类中用 self.test_a()即可调用 A 类的 test_a()方法。

多继承

多继承指的是子类继承了多个父类。来个示例:


class A():    def __init__(self):        self.a = 'a'
def test_a(self): print("aaaa")
class B(): def __init__(self): self.b = 'b'
def test_b(self): print("bbbb")

class C(A, B): def __init__(self): self.c = 'c'
def test_c(self): self.test_a() self.test_b()
复制代码


例子中,C 类就分别继承了 A 类和 B 类的方法。多层继承就是指子类继承的父类也有继承别的类,这里就不举例了。

子类重写父类方法

在某些场景下,子类继承了父类的属性和方法,但子类有同名的方法,这时候就需要重写子类的方法了。


class A():    def __init__(self):        self.a = 'a'
def test(self): print("aaaa")
class B(A): def __init__(self): self.b = 'b' super().__init__()
def test(self): print("bbbb")
复制代码


例子中 B 类继承 A 类的属性和 test()方法,但 B 也有 test 方法,那么只需要在 B 类中重新定义个 test()方法即可。

继承的注意事项及常见运用

注意事项

  • 子类如果重写了__init__方法,子类就不会自动继承父类__init__中的属性。如果要继承父类的属性,需要用到 super 方法,我们在 B 类的__init__方法中加上:


super(子类,self).__init__(参数0,参数1...)父类名称.__init__(self,参数0,参数1...)
复制代码


若继承父类的所有属性就直接用super().__init__()


  • 在调用基类方法时,需加上基类的类名前缀,并带上 self 参数变量。但在类中调用普通函数不需要带上 self 函数。

常见运用

继承在 python 中运用非常广,比如各种模块源码就使用到了继承,我们写代码时如配置代码、log 日志打印都用到了继承。

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2020-06-16 加入

还未添加个人简介

评论

发布
暂无评论
Python继承还不会,看这篇就够了_继承_芥末拌个饭吧_InfoQ写作社区