如何正确使用Python中的issubclass、type和isinstance函数?

2026-05-24 15:301阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计552个文字,预计阅读时间需要3分钟。

如何正确使用Python中的issubclass、type和isinstance函数?

pythonclass Base(object): pass

class Foo(Base): pass

class Bar(Foo): pass

如何正确使用Python中的issubclass、type和isinstance函数?

print(issubclass(Bar, Base))

  • issubclass
  • issubclass
    class Base(object):
    pass

    class Foo(Base):
    pass

    class Bar(Foo):
    pass

    print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类
  • type
  • type:获取当前对象是由那个类创建。或者判断是什么类型
    """
    class Foo(object):
    pass

    obj = Foo()

    print(obj,type(obj)) # 获取当前对象是由那个类创建。
    if type(obj) == Foo:
    print('obj是Foo类型')
    """

    # #### 练习题
    """
    class Foo(object):
    pass

    class Bar(object):
    pass

    def func(*args):
    foo_counter =0
    bar_counter =0
    for item in args:
    if type(item) == Foo:
    foo_counter += 1
    elif type(item) == Bar:
    bar_counter += 1
    return foo_counter,bar_counter

    # result = func(Foo(),Bar(),Foo())
    # print(result)

    v1,v2 = func(Foo(),Bar(),Foo())
    print(v1,v2)
  • isinstance
  • isinstance,检查第一个参数(对象)是否是第二个参数(类及父类)的实例。

    class Base(object):
    pass

    class Foo(Base):
    pass

    obj1 = Foo()
    print(isinstance(obj1,Foo)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    print(isinstance(obj1,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。


    obj2 = Base()
    print(isinstance(obj2,Foo)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    print(isinstance(obj2,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
  • 判断是否是方法和函数
  • 称谓:
    在类里面,方法
    在类外,函数
    到底方法函数?
    对象.xxx --> xxx就是方法
    类.xxx --> xxx就是函数
    xxx --> xxx就是函数
    打印查看:
    function
    method

    代码检查:
    from types import MethodType,FunctionType
    #下面定义函数的作用是检查是方法还是函数
    def check(arg):
    """
    检查arg是方法还是函数?
    :param arg:
    :return:
    """
    if isinstance(arg,MethodType):
    print('arg是一个方法')
    elif isinstance(arg,FunctionType):
    print('arg是一个函数')
    else:
    print('不知道是什么')


    本文共计552个文字,预计阅读时间需要3分钟。

    如何正确使用Python中的issubclass、type和isinstance函数?

    pythonclass Base(object): pass

    class Foo(Base): pass

    class Bar(Foo): pass

    如何正确使用Python中的issubclass、type和isinstance函数?

    print(issubclass(Bar, Base))

  • issubclass
  • issubclass
    class Base(object):
    pass

    class Foo(Base):
    pass

    class Bar(Foo):
    pass

    print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类
  • type
  • type:获取当前对象是由那个类创建。或者判断是什么类型
    """
    class Foo(object):
    pass

    obj = Foo()

    print(obj,type(obj)) # 获取当前对象是由那个类创建。
    if type(obj) == Foo:
    print('obj是Foo类型')
    """

    # #### 练习题
    """
    class Foo(object):
    pass

    class Bar(object):
    pass

    def func(*args):
    foo_counter =0
    bar_counter =0
    for item in args:
    if type(item) == Foo:
    foo_counter += 1
    elif type(item) == Bar:
    bar_counter += 1
    return foo_counter,bar_counter

    # result = func(Foo(),Bar(),Foo())
    # print(result)

    v1,v2 = func(Foo(),Bar(),Foo())
    print(v1,v2)
  • isinstance
  • isinstance,检查第一个参数(对象)是否是第二个参数(类及父类)的实例。

    class Base(object):
    pass

    class Foo(Base):
    pass

    obj1 = Foo()
    print(isinstance(obj1,Foo)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    print(isinstance(obj1,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。


    obj2 = Base()
    print(isinstance(obj2,Foo)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
    print(isinstance(obj2,Base)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
  • 判断是否是方法和函数
  • 称谓:
    在类里面,方法
    在类外,函数
    到底方法函数?
    对象.xxx --> xxx就是方法
    类.xxx --> xxx就是函数
    xxx --> xxx就是函数
    打印查看:
    function
    method

    代码检查:
    from types import MethodType,FunctionType
    #下面定义函数的作用是检查是方法还是函数
    def check(arg):
    """
    检查arg是方法还是函数?
    :param arg:
    :return:
    """
    if isinstance(arg,MethodType):
    print('arg是一个方法')
    elif isinstance(arg,FunctionType):
    print('arg是一个函数')
    else:
    print('不知道是什么')