如何在提示中指定返回值可以是 str 或 None

Sal*_*lih 3 python type-hinting

对于以下代码,PyCharm 显示 'Expected 'Tuple[str, str]', got 'Tuple[None, None]' instead.

def process(self) -> Tuple[str, str]:
    error_message = None
    report_type = None
    report_type_set = set()
    if not self.config_form.cleaned_data['type_check']:
        return report_type, error_message
    else:
        report_type, error_message = self._get_valid_value(report_type_set)
        return report_type, error_message
Run Code Online (Sandbox Code Playgroud)

该方法并不总是返回 None,正如您在else块中看到的[该方法_get_valid_value确保我们返回和] 的str值。那么,我该如何克服这个警告呢?report_typeerror_message

有没有办法在提示中指定它可以是 str 或 None ?

ksb*_*sbg 5

使用Tuple[str, str],您表示此方法始终返回一个字符串元组。

相反,您可以使用: def process(self) -> Tuple[Optional[str], Optional[str]]:

或者: def process(self) -> Tuple[Union[str, None], Union[str, None]]: