python:方法参数的修饰符是可能的吗?
可以修饰方法参数吗?比如:python:方法参数的修饰符是可能的吗?,python,methods,arguments,decorator,Python,Methods,Arguments,Decorator,可以修饰方法参数吗?比如: class SampleEntity (BaseEntity) : def someOperation (self, @Param(type="int", unit="MB")i, str) : pass 基本上,我希望开发人员能够指定关于类、属性、方法、参数等的元数据,我以后可以处理这些元数据。对于类和方法,我可以使用装饰器。所以我想知道如何为方法参数做这件事 谢谢, 很少。您可以修饰函数和类,但不能修饰参数。您不能将修饰器放在参数列表中,
class SampleEntity (BaseEntity) :
def someOperation (self, @Param(type="int", unit="MB")i, str) :
pass
基本上,我希望开发人员能够指定关于类、属性、方法、参数等的元数据,我以后可以处理这些元数据。对于类和方法,我可以使用装饰器。所以我想知道如何为方法参数做这件事
谢谢,
很少。您可以修饰函数和类,但不能修饰参数。您不能将修饰器放在参数列表中,它必须围绕函数或类
您可能希望使用作为装饰器的起点。如果是用于文档,则可以使用常用的 如果是为了更具体的信息,你以后可以在你的应用程序中使用,你也许可以使用
如果您想要静态类型,您应该使用不同的语言。否,但在Python 3中您可以使用 注释可以保存您想要的任何信息,语言并不定义应该放在那里的内容。您可以使用
func.\uuuuu注释\uuuu
dict来访问它们。您可以使用注释来记录这些文档。注释的实际含义取决于您和使用函数的代码
例如:
def dostuff(f: str, x: "Hula hula!"):
pass
什么样的元数据?你不能用docstring吗?那怎么解决我的问题呢?我需要修饰方法本身来提供关于参数的元数据吗?@Litty:你的问题不是Python的问题。这是一个java或C++的问题。如果你切换语言,你就不必做那么多。有趣。我没有意识到这一点+谢谢!有趣的是,PEP--说该属性被称为
func\u annotations
,而不是\uu annotations
。它过时了吗?政治公众人物是否过时?:)。我遇到了一个AttributeError,无法理解我做错了什么。@letitbee:我认为您应该默认先检查语言引用,然后再查看PEP,至少是已经实现的语言功能。注释存储在\uuuuu Annotations\uuuuuuuu
中,甚至在3.0中也是如此,所以我猜他们决定在发布PEP和实现它之间的某个时候对其进行更改。事实上,我引用PEP-1,“PEP应该提供功能的简明技术规范”。虽然如果你是对的,我们不能信任政治公众人物,但我们也不能信任政治公众人物-1!;)
def dostuff(f: str, x: "Hula hula!"):
pass