在 Python 中使用 @ [重复]

Posted

技术标签:

【中文标题】在 Python 中使用 @ [重复]【英文标题】:Use of @ in Python [duplicate] 【发布时间】:2020-08-16 16:54:26 【问题描述】:

我在 IDLE 中使用help() 函数看到了python 的内置super() 方法的方法和文档。 我遇到了这段代码

This works for class methods too: | class C(B): | @classmethod | def cmeth(cls, arg): | super().cmeth(arg)

在第二行中,您可以在classmethod 之前看到@ 符号。

@ 符号在 python 中的作用和用途是什么?

【问题讨论】:

始终对所有与 python 相关的问题使用通用 [python] 标签。 【参考方案1】:

@ 字符表示装饰器。装饰器是可以通过包裹它们来临时修改或扩展另一个函数的行为的函数。

装饰器通过接收函数作为参数来包装函数。 @ 语法(也称为“pie”语法)将 classmethod 装饰器应用于您的 sn-p 中定义的 cmeth

您可以从您的示例 (classmethod) here 中了解有关特定装饰器的更多信息。

【讨论】:

装饰器语法不是“classmethod(cmeth(cls, arg))的简写”;这会将classmethod 应用于调用cmeth结果。装饰器将classmethod 应用到cmeth 本身。也就是说,将@classmethod 装饰器应用于cmeth 是在cmeth = classmethod(cmeth) cmeth 定义之后执行cmeth = classmethod(cmeth) 的语法糖。

以上是关于在 Python 中使用 @ [重复]的主要内容,如果未能解决你的问题,请参考以下文章