Python: редактор, который имеет завершение кода для пользовательских объектов - PullRequest
2 голосов
/ 04 января 2012

Предположим, у меня есть два метода в моем классе, methodA и methodB. В методе A я создаю объект S класса X, а затем хочу передать этот объект в метод B. Затем, когда я пишу methodB, я хочу, чтобы тип X был известен, поэтому, когда я использую его, набирая в своей IDE, я могу просто напечатать «X». и посмотрите список методов и переменных экземпляра для S. Разве это невозможно в python?

def methodA(self):

   S = X()
   self.methodB(S)

def methodB(self, S):

   "S."....#here I want to see all the methods of variable S.

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Это не совсем вопрос о Python.Скорее, это вопрос об IDE.

Я не видел IDE, который мог бы делать то, что вы просите.Кроме того, учитывая динамическую природу Python, было бы очень трудно реализовать такое завершение кода, за исключением некоторых особых случаев.

0 голосов
/ 04 января 2012

Если ваша IDE поддерживает плагин веревка , вы можете иметь частичную поддержку автозаполнения.

Используемый мной редактор (SublimeText) поддерживает плагин веревки, тогдаЯ могу набрать:

class Class(object):
    def __init__(self):
        self.var1 = "one"
        self.var2 = "two"
        self.var3 = "three"

    def method_1(self):
        pass

    def method_2(self):
        self.var1 = "one**"     # Autocomplete works here, no need of workarounds


def test_method(obj1_, obj2_):
    # To make autocompletion works here, I start suffixing the parameters with _

    if False:                # Then I define each parameter statically
        obj1 = Class()
        obj2 = Class()

    # Autocomplete now works!
    obj1.method_1()
    print obj2.var1

    # Remember to rename obj1_ to obj1, ...

###

Может быть, веревка поддерживает своего рода аннотации, чтобы сделать вышеуказанный обходной путь ненужным, но я не могу найти хорошие примеры этого.

...