当前位置: 首页 > 知识库问答 >
问题:

如何查看 python 的 functools.partial 修饰的对象?

葛兴发
2023-10-07
import functools# 原始函数def multiply(x, y):    return x * y# 使用 functools.partial 创建一个新的可调用对象partial_function = functools.partial(multiply, y=2)# 查看 partial_function 的类型print(type(partial_function))

比如上面的代码,输出就是

<class 'functools.partial'>

但是我想知道这个 partial_function 到底修饰了哪个 func 或者 class,怎么知道呢?

共有2个答案

祁均
2023-10-07

我知道了,可以用 .func 属性获取

import functoolsdef multiply(x, y):    return x * y# 使用 functools.partial 创建一个新的可调用对象partial_function = functools.partial(multiply, y=2)print(partial_function.func)

输出

<function multiply at 0x100f97eb0>

如果被修饰的是 class,也是一样的

import functoolsclass Mclass:    def __init__(self,y:int) -> None:        pass# 使用 functools.partial 创建一个新的可调用对象partial_function = functools.partial(Mclass, y=2)print(partial_function.func)

输出

<class '__main__.Mclass'>
微生学
2023-10-07

用 partial_function.func

partial object

partial Objects

partial objects are callable objects created by partial(). They have three read-only attributes:

  • partial.func A callable object or function. Calls to the partial object will be forwarded to func with new arguments and keywords.
  • partial.args The leftmost positional arguments that will be prepended to the positional arguments provided to a partial object call.
  • partial.keywords The keyword arguments that will be supplied when the partial object is called.

partial objects are like function objects in that they are callable, weak referencable, and can have attributes. There are some important differences. For instance, the __name__ and __doc__ attributes are not created automatically. Also, partial objects defined in classes behave like static methods and do not transform into bound methods during instance attribute look-up.

 类似资料:
  • 问题内容: 在其他语言中,有助于产生更好代码的通用准则总是使所有内容都尽可能隐藏。如果不确定变量是私有变量还是受保护变量,最好使用私有变量。 同样适用于Python吗?我是否应该一开始在所有内容上使用两个前导下划线,并且仅在需要时才使它们隐藏程度降低(仅一个下划线)? 如果约定仅使用一个下划线,则我也想知道其基本原理。 这是我对JBernardo的回答所留下的评论。它解释了为什么我问这个问题,以及

  • 问题内容: 我有一个日志文件,该文件是由另一个要监视更改的进程编写的。每次发生更改时,我都希望读入新数据以对其进行一些处理。 最好的方法是什么?我希望从PyWin32库中获得某种吸引。我找到了该功能,但不知道如何要求它观看特定文件。 问题答案: 你是否已经看过http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_chang

  • 我知道如何捕捉keyup和keydown事件。 我希望我的程序看到哪些修改键(例如:元键、控制键、alt键等)当前被按住,即使程序没有观察到这些键的按键事件。 我知道点击事件和其他事件可以告诉我当它们被触发时按下了哪些修改键,但我的程序不能等待一个修改键的出现。 我需要我的程序定期检查修饰符键(例如,每100毫秒)。我将如何做到这一点?如果有帮助,我的程序使用jQuery。

  • 问题内容: 部分应用程序很酷。无法提供哪些功能? 是更有效还是更易读? 问题答案: 无法提供哪些功能? 在额外功能方面并没有太多(但是,请参阅稍后)–可读性在旁观者的眼中。 大多数熟悉函数式编程语言的人(尤其是系列的人)看起来都lambda很好–我说“大多数”,绝对不是全部,因为和我肯定是“熟悉”的人(等) 却被认为是lambdaPython中的一个令人眼花eyes乱的异常…… 他为曾经接受过Py

  • 问题内容: 我正在学习Python。希望有人指出我正确的方法。 这是我想在下面做的事情: 任何想法?提前致谢。 问题答案: 您不能将其作为自己的名称传递,但是可以将其添加到关键字中。 另外,您可以命名自己的参数: 类方法:

  • private private修饰符是我们使用的最限制的修饰符。它表示它只能被自己所在的文件可见。所以如果我们给一个类声明为private,我们就不能在定义这个类之外的文件中使用它。 另一方面,如果我们在一个类里面使用了private修饰符,那访问权限就被限制在这个类里面了。甚至是继承这个类的子类也不能使用它。 所以一等公民,类、对象、接口……(也就是包成员)如果被定义为private,那么它们只