簡體   English   中英

在PyDev中,如何為方法返回的實例獲取自動完成功能?

[英]In PyDev, how can I get autocompletion for an instance returned by a method?

當我使用Class-A方法返回Class-B的實例時,PyDev不會為Class-B的實例提供自動完成功能。 有沒有辦法使這項工作,所以我不會錯誤地輸入方法名稱或忘記參數? 否則,PyDev失去了很多價值!

我想知道你是否正在使用某些類/容器的組合來阻礙pydev預測返回值類型的能力。 這個超級簡單的例子適用於我的系統,我在inst上獲得完整的代碼完成:

class A(object):
  def __init__(self, params = None):
    self.myBs = [B() for _ in range(10)]

  def getB(self):
    return self.myBs[5]

class B(object):
  def foo(self):
    pass

inst = A().getB()
# Auto-complete broken.  PyDev thinks inst is a list.
assert isinstance(inst, B)
# Auto-complete working again.

在詳細說明之后,必須使用assert語句來觸發PyDev的自動完成功能。

斷言isInstance在python中打破了“更好地請求寬恕而非許可”范例。

Pydev理解docstrings中特定裝飾器的類型提示。

以下是一組示例: http//pydev.sourceforge.net/manual_adv_type_hints.html

class Foo(object):
    def method(self):
        pass

    def otherMethod(self):
        pass

def returnFoo():
    return Foo()

"""@type fooInstance: Foo"""
fooInstance = returnFoo()

我沒有太多運氣返回類型(使用epydoc語法),但沒有嘗試太多,但無論分配給哪個對象都可以通過您期望的類型聲明,如上例所示。

您可以使用Sphinx doc評論:

def get_date(...):
    """:rtype date"""
    ...
    return date

有關更多信息,請參閱: http//www.pydev.org/manual_adv_type_hints.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM