gpt4 book ai didi

python输入: Is it possible to specify the type of a variable later than at its creation?

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:39 24 4
gpt4 key购买 nike

我知道当变量作为函数参数传递时(下面的 : Header)或创建变量时(使用 # type: ),可以指定变量类型指令)。

但是是否可以在代码中间(通常在 if block 内)指定变量的预期类型?

例如,在下面的函数中,我想指定我的变量属于 Header 的特定子类,以避免 PyCharm 警告“未解析类 'Header' 的属性引用 'unit'”:

def change_header(old_header: Header, new_header: Header)
if old_header.is_measure:
# I would like to specify here that both old_header and
# new_header are of the subclass MeasureHeader and therefore have
# a 'unit' property
if new_header.unit != old_header.unit:
raise Exception("flag 'all' can't change the unit"

谢谢。

最佳答案

PyCharm 将识别 isinstance 检查:

def change_header(old_header: Header, new_header: Header)
if isinstance(old_header, MeasureHeader) and \
isinstance(new_header, MeasureHeader):
...

您还可以将这样的 isinstanceassert 散布在一起。 PyCharm help 中列出了其他可能性。 .

最后,您可以更严格地遵守您自己的类型提示,并且实际上只坚持您在函数签名中声明的类型,在这种情况下,这可能意味着扩大类型提示:

from typing import Union

def change_header(old_header: Union[Header, MeasureHeader], ...):

关于python输入: Is it possible to specify the type of a variable later than at its creation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44700069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com