Задать вопрос
@astatium135

Как получить имя дочернего класса из родительского метакласса в Python?

Имеется 2 класса (модели данныз в Django)
class a(models.Model):
    name = #получение имени класса
    class Meta:
        abstract = True

class b(a):
    v = 220

x_b = b()
print(b.name)


Нужно, чтобы вывело "b".
Хак с import traceback -> name = traceback.extract_stack()[-1][2] выводит "a", то есть имя родительского класса, а нужно дочернего.
  • Вопрос задан
  • 982 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
@thoughteer
На уровне класса - только через задание атрибута в метаклассе. Но проще сделать это на уровне инстансов в виде вычисляемого свойства:
class a(models.Model):
    @property
    def name(self):
        return self.__class__.__name__  # whatever
    class Meta:
        abstract = True

class b(a):
    v = 220

x_b = b()
print(b.name)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы