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@Tomerikoo
type()
isinstance()
不是一回事。()@Alexander Cécile我很清楚这一点。我的观点是:考虑到当前的代码是
type(color)==type(“”
),您不妨编写
type(color)==str
。不管这是不是正确的方法,我没有声明。只是一个明显的问题fix@Tomerikoo很抱歉,不知怎的,我以为你是这个答案的作者。
assert type(color) == str, 'Must be string'