Python源码解读之一 万物皆对象(上)

万物皆对象

初探对象

Python中一切皆对象,在Python的世界里面,所有东西都是对象。整型、字符串、字典、int、str、list、class自定义类都是对象。

像int、str、list等基本类型,以及我们自定义的类,由于它们可以表示类型,因此我们称之为类型对象;类型对象实例化得到的对象,我们称之为实例对象。不管是哪种对象,它们都属于对象。

所以在Python当中,不管是“类”还是“对象”都是由对象实现的。

对象是由类实例化得到的,所以对象一定有类型,对象被谁实例化决定了它的类型。那么int,tuple,str这些内置的类是什么类型的呢?

print(type(int))
print(type(dict))
print(type(str))
print(type(type))

<class ‘type’>
<class ‘type’>
<class ‘type’>
<class ‘type’>

我们可以发现不管是int,dict还是type,它们的类型都是type。而type我们称为元类,表示类型对的类型。

Python中还有一个特殊的对象object,他是所有类型对象的基类。在Python3中,自定义的类即使不显式的继承object,也会默认继承自object。

谈到继承,这里稍微提一下查看继承的三个方法

class A:
    pass

class B:
    pass

class C(A):
    pass

class D(B, C):
    pass

# 首先D继承自B和C, C又继承A, 我们现在要来查看D继承的父类
# 方法一: 使用__base__
print(D.__base__)  # <class '__main__.B'>

# 方法二: 使用__bases__
print(D.__bases__)  # (<class '__main__.B'>, <class '__main__.C'>)

# 方法三: 使用__mro__
print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

好了,讲到这里相信有小伙伴心里会提出些许疑问,type是所有类的元类,而object是所有的基类,这就说明type是要继承自object的,而object的类型是type,那么type和object到底先有哪个。

这个问题是这样的,type和object其实是相互依赖的,在之后的文章中我会提到。目前

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值