Можно ли получить дополнительную подсказку для kwargs, которая даст вам примеры предопределенных возможных аргументов ключевого слова? Может эпитекст его не поддерживает?
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 ...
Было бы здорово, если бы я получил что-то вроде этого в подсказке завершения (извините, мне пришлось удалить картинки):
- > я, имя, возраст, связи
С Quick 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 (как в первом примере):
- > сам, **кваргс
Я знаю, что реализация строк документации для определений и подсказок автодополнения ограничена, но, возможно, кто-то знает другой способ получить то, что я хочу, в PyCharm.
**kwargs
в том, что вы можете передавать любые произвольные аргументы ключевого слова. Насколько я знаю, вы можете намекнуть только на@param kwargs
в целом вepytext
, иначе он не знает, на какие параметры вы ссылаетесь. - person jonrsharpe   schedule 09.12.2014