python2.7: возможно ли определить, был ли __init__ вызван из подкласса или просто нормально? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть два класса

class A()

class B(A)

Иногда экземпляр класса A создается нормально, а иногда через класс B с помощью

super(B, self).__init__()

Можно ли определить, был ли вызван метод init класса Aот Б или снаружи?

1 Ответ

0 голосов
/ 03 апреля 2019

Вы можете сравнить 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хотя я не уверен почему вы хотите сделать это в первую очередь.

...