Python 检查对象参数类型的正确方法
此代码似乎不起作用:Python 检查对象参数类型的正确方法,python,Python,此代码似乎不起作用: class Dog: def __init__(self,color): assert type(color) == 'str', 'Must be string' self.color = color dog = Dog('black') line 26, in __init__ assert type(color) == 'str', 'Must be string' AssertionError: Must be stri
class Dog:
def __init__(self,color):
assert type(color) == 'str', 'Must be string'
self.color = color
dog = Dog('black')
line 26, in __init__ assert type(color) == 'str', 'Must be string'
AssertionError: Must be string
即使我用了一根绳子。它们是检查给定参数是否具有正确类型的一种方法吗?首先,
'str'
和str
是不同的:第一个是字符串,第二个是str
类。如果与类比较,(type('hello')==str)为True
您很可能希望检查参数是否是str
的实例:
assert isinstance(color, str), 'Must be string'
如果您想检查类型,而不使用
isinstance
,这是您的选择
assert type(color) == type(""), 'Must be string'
或
类型(颜色)==str
,而不是类型(颜色)='str'
。还有,看看。这能回答你的问题吗?我觉得重要的是要提到,这可能是不符合实际的。另外,assert
实际上应该只用于调试。为什么不只是type(color)==str
?@Tomerikoo更正,编辑我的answer@Tomerikootype()
和isinstance()
不是一回事。()@Alexander Cécile我很清楚这一点。我的观点是:考虑到当前的代码是type(color)==type(“”
),您不妨编写type(color)==str
。不管这是不是正确的方法,我没有声明。只是一个明显的问题fix@Tomerikoo很抱歉,不知怎的,我以为你是这个答案的作者。
assert type(color) == str, 'Must be string'