【问题标题】:Autocomplete passed class object自动完成传递的类对象
【发布时间】:2019-09-25 18:58:15
【问题描述】:

我有两个类,分别是 A 和 B。B 在其构造函数 A 作为参数。 A 类有一个函数 foo。现在当我输入“a”时。我希望 Vs 代码自动完成以显示建议“a.foo()”。它目前不工作。我需要输入提示或类似的东西吗?我尝试导入 A 但它不起作用。

class A:
    def __init__(self):
    def foo(self):
        print("hello")
class B:
    def __init__(self, a):
        a. <-- this should show the members of A but does not

运行 Mac 和带有 Microsoft 扩展的 Python 2.7。

【问题讨论】:

  • 你能显示一个示例代码吗
  • 修复了! @杰里尔

标签: python class parameters visual-studio-code autocomplete


【解决方案1】:

Python 是一种动态类型语言,您的编辑器无法在运行前评估传递给 B 的构造函数的参数 a 的类型以显示其属性。

您可以使用类型提示来告诉您希望将A 对象作为参数a 传递给B 的构造函数:

def __init__(self, a: A):

如果没有类型提示,您可以使用 ctrl(or command)+space 查看所有可能的补全。

【讨论】:

  • 谢谢!这正是我想要的。我之前试过这个,但是,我使用的是 Python 2.7,这是一个 3.5 的实现。关于如何在 2.7 中解决它的任何想法?
  • python.org/dev/peps/pep-0484/… 这是 Python 2 的建议语法和注释,不是强制性的,某些编辑器可能会使用,而其他编辑器可能会忽略它。在我测试的时候,我认为 VSCode 不支持这个。
【解决方案2】:

试试这个:

class A:
    def __init__(self):
    def foo(self):
        print("hello")
class B(A):
    def __init__(self):
       super().__init__()

现在你应该能够:

classexp = B()
classexp.{some A function}

【讨论】:

  • 感谢您的重播。但是,我并不想继承 A 类,我只是想使用 B 类!
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2017-10-23
  • 2015-05-10
  • 2012-05-15
相关资源
最近更新 更多