面向对象编程04

issubclass()与isinstance()

  • sisubclass()用于判断类对象与类对象之间的关系(类对象前面的类是不是后面的子类),输出逻辑变量(true、false)

接收两个实参,第一个实参是类对象;第二个实参是类对象或由类对象组成的元组

class A(object):
    pass
class B(object):
    pass
class C(object):
    pass
class D(A):
    pass

当第二个实参是类对象时,如果第一个实参是第二个实参的子类,那么返回True

In [4]: issubclass(D, A)
Out[4]: True
In [5]: issubclass(D, B)
Out[5]: False

当第二个实参是类对象组成的元组时,如果第一个实参是第二个实参中任意一个类对象的子类,返回True

In [6]: issubclass(D, (B, A, C))
Out[6]: True
In [7]: issubclass(D, (B, C))
Out[7]: False

布尔类型是整数类型的子类,不是字符串类型的子类

In [8]: issubclass(bool, int)
Out[8]: True
In [9]: issubclass(bool, str)
Out[9]: False
In [10]: issubclass(bool, (str, int, dict))
Out[10]: True
In [11]: issubclass(bool, (str, list, dict))
Out[11]: False
  • isinstance()用于判断实例对象与类对象之间的关系

接收两个实参,第一个实参是实例对象;第二个实参是类对象或由类对象组成的元组

class A(object):
    pass
class B(object):
    pass
class C(object):
    pass
class D(A):
    pass

当第二个实参是类对象时,如果第一个实参是第二个实参的实例对象,或者第一个实参是第二个实参的子类的实例对象,那么返回True

In [13]: isinstance(D(), D)
Out[13]: True
In [14]: isinstance(D(), A)
Out[14]: True

当第二个实参是类对象组成的元组时,如果第一个实参是第二个实参中任意一个类对象或其子类的实例对象,那么返回True

In [15]: isinstance(D(), (D, B, C))
Out[15]: True
In [16]: isinstance(D(), (D, A, C))
Out[16]: True

type()与dir()

  • type()用于获得指定对象的类型
class MyClass(object):
    pass
mc = MyClass()

实例对象的类型是其对应的类对象

In [18]: type(mc)
Out[18]: __main__.MyClass
In [19]: type(18)
Out[19]: int
In [20]: type('abc')
Out[20]: str

类对象的类型是type,也就是说,类对象是type的一个实例对象

In [21]: type(MyClass)
Out[21]: type
In [22]: type(int)
Out[22]: type
In [23]: type(str)
Out[23]: type

自定义函数对象的类型是function

def do_sth():
    pass
In [26]: type(do_sth)
Out[26]: function

内置函数对象的类型是builtin_function_or_method

In [27]: type(dir)
Out[27]: builtin_function_or_method
In [28]: type(dir())
Out[28]: list

可以使用运算符==判断某个对象的类型是否是制定的类型

In [29]: t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值