如何根据函数的参数指定返回类型?

时间:2018-02-07 09:34:35

标签: python-3.x pycharm python-3.6 typing

目前我有这段代码:

class Value:
    def __init__(self, data: Any):
        self.data = data
        # ...and much more than this

    def convert_value(self, value_type: Type['Value']) -> 'Value':
        return value_type(self.data)

class BooleanValue(Value):
    pass

convert_value方法将Value的实例转换为作为参数传递的value_type实例。例如:

value = Value(123)
new_value = value.convert_value(BooleanValue)

在这种情况下,new_value的类型为BooleanValue。我不认为有必要这样做(应该有更好的方法):

new_value: BooleanValue = value.convert_value(BooleanValue)

目前PyCharm知道我返回了Value个实例,但我希望通过输入来理解返回BooleanValue

我试着这样做:

T = TypeVar('T', 'Value')

class Value:
    # Other methods
    def convert_value(self, value_type: Type[T]) -> T:
        return value_type(self.data)

但是PyCharm声称value_type不可调用。

问题:如何让PyCharm明白从这个方法返回的对象有value_type类型?

1 个答案:

答案 0 :(得分:1)

您的类型提示是正确的,它在PyCharm中是bug