将函数保存在元组中而不执行

发布于 2024-12-06 19:31:54 字数 202 浏览 0 评论 0原文

我有一个如下所示的元组:

self.tagnames = (('string', self.do_anything()),)

如果一个字符串与另一个字符串匹配,它应该执行特定的函数。 但是,当我初始化 self.tagnames 时,它似乎已经执行了该函数。

如何在启动时不执行该函数的情况下解决我的问题?

I have a tuple like the following:

self.tagnames = (('string', self.do_anything()),)

It should execute a specific function if a string matches to another.
However, when I initialize self.tagnames, it seems to execute the function already.

How can I fix my issue without executing the function on startup?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

奶茶白久 2024-12-13 19:31:54
self.tagnames = (('string', self.do_anything),)

() 是一个函数调用。如果您想将调用推迟到稍后,只需包含不带括号的函数引用,如下所示。

self.tagnames = (('string', self.do_anything),)

The () is a function call. If you want to defer the call until later, and just include the function reference without the parens like so.

攀登最高峰 2024-12-13 19:31:54
self.tagnames = (('string', self.do_anything),)

您可以通过使用带参数列表的括号来调用函数:

len 是一个函数,len(s) 在参数 s 上调用该函数。只需使用函数的名称即可获得该函数。去掉括号内的参数列表,您将不再调用该函数。

self.tagnames = (('string', self.do_anything),)

You invoke a function by using parens with an argument list:

len is a function, len(s) is invoking that function on the argument s. Simply using the function's name gets you the function. Leave off the parenthesized argument list, and you are no longer invoking the function.

汐鸠 2024-12-13 19:31:54

您应该删除括号:

self.tagnames = (('string', self.do_anything),)

显然 self.do_anything() 立即调用该方法,而不是 self.do_anything 返回 Python 中所谓的“绑定方法”,即它是一个可调用对象,您可以仅向其传递参数(如果有),这将导致调用特定实例上的方法。

You should just remove the parenthesis:

self.tagnames = (('string', self.do_anything),)

Clearly self.do_anything() calls the method immediately, instead self.do_anything returns what in Python is called a "bound method", i.e. it's a callable object to which you can pass just the parameters (if any) and that will result in calling the method on the specific instance.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文