是否可以获得kwargs的额外提示,这将为您提供预定义的可能关键字参数的示例?也许epytext不支持它?
class Person():
def __init__(self, **kwargs):
"""
@param name: Name
@type name: str
@param age: Age
@type age: int
@param connections: Connections to other persons
@type connections: [Person]
.
.
. # I know this is not working
"""
self.name = kwargs[name] if name in kwargs
self.age = kwargs[age] if age in kwargs
# and so on ...
如果我在完成提示中得到类似的内容(抱歉我必须删除图片),那会很棒:
快速Doku看起来像这样:
我真的很喜欢将普通班级作为家长的全球班级。这使得重用更容易。所以这里有一个小片段示例:
class common():
PERSON_DETAILS = dict( name = ' ',
age = 1,
connection = [] )
使用一个不同的定义类Person:
class Person(common):
def setDetail(self, **kwargs):
"""
Set some detail information about the person.
"""
argErrors = []
for arg, value in kwargs.iteritems():
if arg in self.PERSON_DETAILS:
if type(value)==type(self.PERSON_DETAILS[arg]):
self.doSomething() # I don't want to go deeper here
else:
raise ValueError("setDetails(%s) the type of '%s' needs to be %s, %s found" % (arg,arg,type(self.PERSON_DETAILS[arg]),type(value)))
else:
raise TypeError("setDetails() got an unexpected keyword argument '%s'" %arg )
person = Person()
person.setDetails()
以下(图片已删除)显示了我获得的完成提示(完全正确),但是从kwargs中推出一个推出的参数列表会很棒(如第一个例子中所示):
我知道定义和自动完成提示的docstring实现是有限的,但也许有人知道在PyCharm中获得我想要的不同方式。
答案 0 :(得分:4)
According to the Epytext documentation,您可以使用@keyword
来实现这一目标。
应使用
@param
字段来记录任何显式参数(包括关键字参数)。@keyword
字段只能用于非显式关键字参数:
此外,@kwarg p: ...
和@kwparam p: ...
是同义词。