【Python】issubclass/type/isinstance的用法

  1. issubclass
issubclass
   class Base(object):
      pass

   class Foo(Base):
      pass

   class Bar(Foo):
      pass

   print(issubclass(Bar,Base)) # 检查第一个参数是否是第二个参数的 子子孙孙类
  1. 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)
  1. 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)) # 检查第一个参数(对象)是否是第二个参数(类及父类)的实例。
  1. 判断是否是方法和函数
称谓:
   在类里面,方法
   在类外,函数
到底方法函数?
   对象.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('不知道是什么')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug 挖掘机

支持洋子

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值