目前我有这段代码:
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
类型?