Как обратиться к потомку в родительском методе?

В результате выполнения получаю 'A', а хочу получить имя того класса из которого обращаюсь к родительскому методу, то есть 'B'.

class A:
    def class_name():
        print(__class__.__name__)

class B(A):
    pass

B.class_name()

Как это сделать?

Можно конечно так:

class A:
    def class_name(cls):
        print(cls.__name__)

class B(A):
    pass

B.class_name(B)

но не хочется передавать параметр, масло маслянное.


Ответы (3 шт):

Автор решения: t4kq

Можете попробовать такой вариант

class A:
    def __init__(self):
        print(self.__class__.__name__)

class B(A):
    pass

B()
→ Ссылка
Автор решения: Кирилл Малышев

Возможно, такое вам подойдëт

class A():
    def class_name(self):
        print(self.__class__.__name__)

class B(A):
    pass

B().class_name()
→ Ссылка
Автор решения: Andy Pavlov

Можно вот так через декоратор метода класса:

class A:
    @classmethod
    def class_name(cls):
        print(cls.__name__)


class B(A):
    pass

A.class_name()  # A
B.class_name()  # B
→ Ссылка