python2.7:是否可以确定是从子类中调用__init__还是正常调用了它?

时间:2019-04-03 10:32:11

标签: python class subclass super

我有两个课

class A()

class B(A)

有时A类通常被实例化,有时通过B类使用

super(B, self).__init__()

是否可以确定是从B还是从外部调用A类的init方法?

1 个答案:

答案 0 :(得分:0)

您可以将type(self)A进行比较:

class A(object):

    def __init__(self):
        if type(self) == A:
            print('From A')

        else:
            print('From elsewhere')

class B(A):
    pass

A()
B()

输出:

From A
From elsewhere

这是您仅有的几次想要type胜过isinstance的情况之一,尽管我不确定为什么首先要这样做。