四时宝库

程序员的知识宝库

Python内置函数分析「isinstance&type」

一.isinstance

  isinstance(object, classinfo)

  object -- 实例对象

  classinfo -- 可以是直接或间接类名、基本类型或由它们组成的元组

  如果对象的类型与第二个参数的类型相同,则返回True,否则返回False。

  isinstance()函数用来判断一个对象是否是一个已知类型的数据,类似于type()。

  isinstance()和type()的区别:

  1.type()不会认为子类是一种父类类型,不考虑继承关系。

  2.isinstance()会认为子类是一种父类类型,考虑继承关系。

  相同点:

  都不认为父类是子类的一种类型!

  判断两个类型是否相同可以根据具体业务进行选择,一般建议选择isinstance()。

二.type

    type(object)

    type(name, bases, dict)

    参数:

    name -- 类的名称

    bases -- 基类的元组

    dict -- 字典,类内定义的命名空间变量

    返回值:

    一个参数返回对象类型,三个参数返回新的对象类型

三.代码实战

Bash
def to_abs(arg):
    if(isinstance(arg,(int, float))):
        if(arg < 0):
            return -arg
        else:
            return arg
    else:
        raise TypeError('bad operation type') #定义异常
    
class A:
    pass # 当不确定代码时,可以先写pass占位符

class B(A):
    pass

# 调用
abs_1 = to_abs(-4.5)
abs_2 = to_abs(0)
abs_3 = to_abs(4.5)

# 测试
print(abs_1, abs_2, abs_3, sep='_')

print(isinstance(12, int))
print(isinstance(12, float))
print(isinstance(12, object))

print('===========')

print(type(12) == int)
print(type(12) == float)
print(type(12) == object)

print('-------------------------')

print(isinstance(A(), A))
print(isinstance(B(), A))
print(isinstance(A(), B))

print('===========')

print(type(A()) == A)
print(type(B()) == A)
print(type(A()) == B)

执行结果:

四.Python内置函数大全

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接