Python调用父类中的方法和super()的用途

直接调用父类的super方法
class A:
    def span(self):
        print('---a---')

class B(A):
    def span(self):
        print('-----b-----')
        super().span()

b = B()
print(b.span())
调用父类的init()方法,确保父类被正确初始化
class C:
    def __init__(self):
        self.x = 1

class D(C):
    def __init__(self):
        super().__init__()
        self.y = 1

d = D()
print(d.x, d.y)
当覆盖了python中的特殊方法时
class Proxy:
    def __init__(self, obj):
        self.obj = obj

    def __getattr__(self, name):
        return getattr(self._obj, name)

    def __setattr__(self, name, value):
        if name.startswith("_"):
            # __setattr__方法被覆盖,调用父类的原始方法
            super().__setattr__(name, value)
        else:
            setattr(self._obj, name, value)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,859评论 2 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,820评论 0 10
  • 官方文档 初始化 Initialization是为准备使用类,结构体或者枚举实例的一个过程。这个过程涉及了在实例里...
    hrscy阅读 1,150评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 这个周末过得怎么样? 这个周末有点“丧”。提不起精神,没一件开心的事,除了焦虑,还是焦虑。 因为平时工作确实累,所...
    三妹的冒险人生阅读 1,041评论 13 7