2012-01-27 3 views
5

Недавно я взял PyCharm, и я привык к функции от Wing, где вы можете указать IDE, какой класс будет представлять конкретный идентификатор (переменная, атрибут, что угодно). Например:Есть ли способ явно указать PyCharm, какой класс является атрибутом?

my_object = SomeClass() 
assert isinstance(my_object.my_attribute, SomeOtherClass) 

На данный момент, Крыло точно знает, что my_object.my_attribute является даже если он не мог иначе понять это из анализа исходного кода.

Я ищу аналогичную функцию в PyCharm. Я знаю, каков конкретный атрибут объекта, но PyCharm этого не делает, поэтому как я могу это сказать, чтобы он мог дать мне удобные дополнения?

Связанный вопрос: Я также вижу подобный вопрос, How can I tell PyCharm what type a parameter is expected to be?, но он не охватывает атрибутов, только параметры.

ответ

7

На самом деле PyCharm также понимает синтаксис «assert isinstance», но только для неквалифицированных ссылок. Я подал вопрос, чтобы поддержать это квалифицированные ссылки, а также:

http://youtrack.jetbrains.net/issue/PY-5614

В текущей версии, вы можете указать тип my_attribute, перейдя к объявлению SomeClass и добавление epydoc или сфинкса строка документации для атрибута.

2

Это работает для меня (2.6.2)

class Rule (object): 
    def __init__(self, *args): 
     self.criteria = [] 
     """@type : list of Criterion""" 
     crit = self.criteria[0] 
     #on this line, code completion works for "crit" 
5

Если я правильно понимаю ваш вопрос, что вы ищете общее определение типа от PyCharm. Исходя из статически типизированного языка, я был озадачен, когда я использовал завершение кода, и выбор был примерно таким же большим, как и содержимое библиотеки python.

Я НАЙДЕНО, что в PyCharm он имеет возможность собирать информацию о типе во время выполнения и сделать это доступным во время разработки (то есть завершение кода).

Вот как вы это делаете ...

Preferences> Python Debugger> «Collect типы времени выполнения для кода прозрения»

Как вы «отладки» ваш код (не вы не должны используйте точку останова). PyCharm начнет предлагать лучшие предложения для всей навигации/завершения кода.

Приветствия

Picture of Debug Preferences

Смежные вопросы