当前位置 : 主页 > 编程语言 > python >

【Python】issubclass/type/isinstance的用法

来源:互联网 收集:自由互联 发布时间:2022-06-24
issubclass issubclass class Base(object): pass class Foo(Base): pass class Bar(Foo): pass print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类 type type:获取当前对象是由那个类创建。或者
  • 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('不知道是什么')


    【文章原创作者:武汉网络公司 http://www.wh5w.com提供,感恩】
    上一篇:【Python】面向对象-反射
    下一篇:没有了
    网友评论