如何在Python中使用动态属性返回具有自动填充功能的函数

时间:2017-01-25 08:03:36

标签: python eclipse dynamic autocomplete pycharm

class A(object):
    def __init__(self):
        self.b = 5
        self.c = 0

class B(A):
    def __init__(self):
        self.e = 10
        self.d = 11

def jojo(li):
    return li[1]

def lala():
    a = [A(), B()]
    b = jojo(a)
    return b

lala()

如何让PyCharm(或任何IDE)的自动完成功能建议我将b,c,d和e作为lala()的属性。 我可以在某处定义自定义列表吗?

2 个答案:

答案 0 :(得分:1)

Python 3的解决方案

如果可以列出所有可能性,您可以使用Union type

我添加了C类,因为它不在AB类层次结构中,因此示例将更清晰,更全面。

from typing import Union


class A(object):
    def __init__(self):
        self.b = 5
        self.c = 0

class B(A):
    def __init__(self):
        self.e = 10
        self.d = 11

class C:
    def __init__(self):
        self.f = 12

def jojo(li):
    return li[1]

def lala() -> Union[A, B, C]:
    a = [A(), B(), C()]
    b = jojo(a)
    return b

lala()

enter image description here

答案 1 :(得分:0)

对于PYTHON 2

class A(object):
    def __init__(self):
        self.b = 5
        self.c = 0

class B(A):
    def __init__(self):
        self.e = 10
        self.d = 11

def jojo(li):
    return li[1]

def lala():
    # type: () -> B
    a = [A(), B()]
    b = jojo(a)
    return b

lala()

Union不起作用,因此只能传递一个类