Правильная терминология для результата, отображаемого при выводе функции на Python

Я знаю, что это, вероятно, где-то в документах, но поиск немного сложнее. Когда мы явно print функция (не вызывать ее), как называется отраженный результат?

например.

def func():
    pass

print(func)

Возвращает:

<function func at 0x7f5f539587b8>

Как называется этот результат? Другой пример будет <class '__main__.a'>,

Особая благодарность доброму человеку, который может сказать мне, могут ли эти результаты быть использованы для чего-то тоже.

1 ответ

Решение

Это "строковое представление" объекта. Это в основном лучший способ, с помощью которого Python может представить ваш объект в виде строки.

В первом случае Python говорил вам, перефразируя, "это функция с именем" func "в ячейке памяти 0x7f5f539587b8". Это лучшее строковое представление, которое вы можете получить без вашего лучшего представления.

Во втором случае Python говорил вам: "Это класс с именем" a ", и он находится в пространстве имен модуля"main".

Вы можете изменить это значение, определив специальный метод __repr__ вашего класса. __repr__ дает "формальное представительство", а __str__ - "неформальное представительство". Смотрите это для более подробной информации.

Это, например:

class A:
    def __init__(self, unique_name):
        self.unique_name = unique_name

    def __repr__(self):
        return "object of type A and name %s in the name-space of %s" \
               % (self.unique_name, __name__)

a = A('foo')
print(a)

class B:
    pass

b = B()
print(b)

возвращает:

object of type A and name foo in the name-space of __main__
<__main__.B object at 0x7ffb9eb37668>
Другие вопросы по тегам