您的位置:首页 > 编程语言 > Python开发

Python类型判断type与isinstance

2017-06-30 19:01 706 查看
在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。
这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过来的参数。
def compute_entropy(self, dataset):
""" 计算数据集dataset的信息熵
dataset: 第一列为数据集的label
"""
if isinstance(dataset, np.ndarray):
pass
else:
raise(TypeError("numpy.ndarray is required for input."))


验证类型用type函数,非常好用,比如
type("foo") == str
type(2.3) in (int, float)


既然有了type()来判断类型,为什么还有isinstance()呢?一个明显的区别是在判断子类。type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型
class Foo(object):
pass

class Bar(Foo):
pass

print(type(Foo()) == Foo)
print(type(Bar()) == Foo)
print(isinstance(Foo(), Foo))
print(isinstance(Bar(), Foo))

# 输出:
True
False
True
True
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python