【发布时间】:2020-05-06 06:10:03
【问题描述】:
如果我有一个名为 foo 的函数:
def foo():
return "foo function"
如果看到它甚至没有调用函数就返回一个字符串,这意味着__repr__ 的定义就像你在这个例子中看到的那样:
>>> func
<function func at 0x000001F43B1968B8>
>>> func.__repr__()
'<function func at 0x000001F43B1968B8>'
所以现在有 2 个问题浮现在我的脑海中
- 函数是类类型吗?
- 如果是这样,我如何在函数中定义
__repr__
对这两个问题的一点解释:
1:
因为如果你这样做:func. 然后在 IDE 中按 ctrl + 空格,你会看到类也有的所有内容,所以我得到的问题是函数不是(简单)类?
2: 我可以这样做吗:
def foo():
def __repr__():
return "lol"
foo.__repr__ = __repr__
return "foo function"
它在 IDLE 中工作,但在您调用它之前它不会更改 __repr__ 输出,所以可以在调用函数之前更改 __repr__ 吗?
【问题讨论】:
-
你把类和实例搞混了。大多数你认为函数是类的证据实际上是因为函数是类的实例(这并不特殊,因为每个对象都是 Python 中的类的实例)。
标签: python python-3.x function repr