如果我有一个名为foo的函数:
def foo():
return "foo function"
如果看到它返回字符串而不调用函数的事实,则表示__repr__
的定义与您在本例中看到的相同:
>>> func
<function func at 0x000001F43B1968B8>
>>> func.__repr__()
'<function func at 0x000001F43B1968B8>'
现在有两个问题向我提出
__repr__
from对这两个问题做一点解释:
1:
因为如果你这样做:func.
然后在IDE中按ctrl+space,你可以看到类的所有内容,那么我得到的问题是函数不是(简单的)类
2: 我可以这样做吗:
def foo():
def __repr__():
return "lol"
foo.__repr__ = __repr__
return "foo function"
它在空闲状态下工作,但在调用它之前不会更改__repr__
输出,因此可以在调用函数之前更改__repr__
吗
回答:
回答问题2:不使用def
回答问题1:是的,您可以将函数视为类,因为python是基于类的
因为:
这是:
对于用户而言,与以下内容相同:
因此,如果你真的想拥有一个看起来像函数的东西,但是有一个自定义版本的
__repr__
,你只需要做如下的事情:因为现在如果在中粘贴后在空闲状态下执行
foo
,您将看到以下输出:在本例中,我使用一个类作为包装器:
它打印出:
解释:
(几乎)python中的所有内容都是一个类尝试使用type(object),您将看到几乎每个“对象”都表示它是一个类
所以我想说的是python几乎是基于类的,它们无处不在,因为如果你试图从非内置的东西中找到一个非类。因为只有一些内置函数不被视为类
概述:
因此,概括一下我的回答:
不,您不能使用def在调用函数之前调用
__repr__
,但是您可以创建一个看起来像函数的类,并且可以创建一个对用户来说像函数的类产生
是,例如使用装饰器:
产生
相关问题 更多 >
编程相关推荐