Правильная терминология для результата, отображаемого при выводе функции на 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>