8-7中13:00左右, BaseModel有两行代码不太理解?

来源:8-7 通过元类实现orm-2

慕粉1946152704

2019-10-29

图片描述
BaseModel这个类的__init__函数最后一行return super().init()不太理解其含义, 先谈谈我的理解:

super()指BaseModel这个类在__mro__中继承的上一个类, 也就是object, 所以这行等价于return object.init(), 这个返回的是个什么对象呢?返回的对象会到哪去呢?很疑惑…

写回答

3回答

慕少0351952

2022-06-07

继承的C3算法?

0
0

bobby

2019-10-30

class A(object):
    def __init__(self):
        super(A, self).__init__() #可以注释这一行再看看会不会调用B的init

class B(object):
    def __init__(self):
        print("i am in B")
        super(B, self).__init__()

class C(A, B):
    def __init__(self):
        print("i am in C")
        super(C, self).__init__()


c = C()

可以理解一下A中继承的明明是object,调用super()为什么会调用B的init方法呢

0
4
bobby
回复
慕粉1946152704
super方法根据实际运行的时候来调用的,所以不是B类本身的调用这个是和实例关联起来的
2019-11-02
共4条回复

bobby

2019-10-30

如果我定义了一个c 

class C(BaseModel, BaseModel2):
    pass

这个时候在c中调用了super().__init__(), 会去调用BaseModel中init,这个时候BaseModel调用super()还会是object类吗?

0
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程