Как обратиться к потомку в родительском методе?
В результате выполнения получаю '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