Получить имя класса во время определения класса - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать доступ к имени класса во время определения класса.

class Foo:
    print('Creating class Foo')

Есть ли способ создать ссылку на имя с явным указанием его переписывания?

Что-то вроде:

class Foo:
    print('Creating class', __class_name__)

Out[1]: Creating class Foo

Причина в том, что я хочу создать объект регистратора, который живет внутри класса.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Я действительно нашел способ сделать это на Python 3.3 +.

Это называется квалифицированным именем. Это PEP, который объясняет это

Это код, который делает это:

class Foo:
    print('Creating class', __qualname__)
0 голосов
/ 19 сентября 2019

Там нет.Если ваша цель состоит в том, чтобы просто уменьшить количество мест, где имя класса явно упомянуто, я бы порекомендовал «закрытый» атрибут класса, который, по крайней мере, можно хранить в лексическом смысле близко к началу оператора, чтобы упростить его поиск.вы решаете изменить имя класса.

class Foo:
    _name = 'Foo'

    class_logger = logger.getChild(_name)

(Этот ответ предшествует редактированию вопроса, который исключил использование __class_name__ при определении регистратора в качестве примера.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...