在对映射使用部分特化时,我有一个关于类型提示的问题。
请参阅下面的示例代码:类型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()