如何检查对象是否为给定类型,或是否从给定类型继承?
如何检查对象o是否为str类型?
初学者通常错误地期望字符串已经是“数字”——要么期望Python 3.x输入转换类型,要么期望像“1”这样的字符串同时也是整数。对于这些问题,这是错误的规范。请仔细阅读问题,然后使用How do I check if a string representative a number(float or int)?,如何将输入读取为数字?和/或询问用户输入,直到他们给出适当的有效响应。
如何检查对象是否为给定类型,或是否从给定类型继承?
如何检查对象o是否为str类型?
初学者通常错误地期望字符串已经是“数字”——要么期望Python 3.x输入转换类型,要么期望像“1”这样的字符串同时也是整数。对于这些问题,这是错误的规范。请仔细阅读问题,然后使用How do I check if a string representative a number(float or int)?,如何将输入读取为数字?和/或询问用户输入,直到他们给出适当的有效响应。
当前回答
在Python 3.10中,可以在isinstance中使用|:
>>> isinstance('1223', int | str)
True
>>> isinstance('abcd', int | str)
True
其他回答
我认为最好的方法是键入好变量。您可以使用“键入”库来完成此操作。
例子:
from typing import NewType
UserId = NewType ('UserId', int)
some_id = UserId (524313`)
看见https://docs.python.org/3/library/typing.html.
在Python 3.10中,可以在isinstance中使用|:
>>> isinstance('1223', int | str)
True
>>> isinstance('abcd', int | str)
True
isinstance(o, str)
链接到文档
检查类型的一个简单方法是将其与您所知道的类型进行比较。
>>> a = 1
>>> type(a) == type(1)
True
>>> b = 'abc'
>>> type(b) == type('')
True
如果o是str或是从str继承的类型,isinstance(o,str)将返回True。
如果且仅当o是str时,type(o)is str将返回True。如果o是从str继承的类型,则返回False。