部分映射专业化的python /泛型类型提示

时间:2018-03-15 10:18:47

标签: python python-3.x typing

在对映射使用部分特化时,我有一个关于类型提示的问题。

请参阅下面的示例代码:类型PairLeftRight是一种Dict[Side, Any]

函数test_pair将接受专门类型:PairLeftRight[MyClass]

我希望能够为此函数添加类型提示,以便我的IDE(pycharm)通过自动完成`MyClass``中的可用方法来帮助我

有可能吗?

import typing
from enum import Enum

VT = typing.TypeVar('T')  # Any value type.

class Side(Enum):
    Left = "Left"
    Right = "Right"
Sides = [Side.Left, Side.Right]

class PairLeftRight(typing.Dict[Side, VT]):
    pass

class MyClass(object):
    def __init__(self, name):
        self.name = name
    def hello(self):
        print("Hello " + self.name)

# Here, I want to speficy that the input is a PairleftRight[MyClass]
def test_pair(pair : PairLeftRight[MyClass]):
    for side in Sides:
        # Here I would like my IDE (pycharm) to help me by auto-completing
        # the available methods in `MyClass`
        pair[side].hello()

def test():
    a = PairLeftRight()
    a[Side.Left] = MyClass("Robert")
    a[Side.Right] = MyClass("Melissa")
    test_pair(a)

test()

0 个答案:

没有答案