万物皆对象
初探对象
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其实是相互依赖的,在之后的文章中我会提到。目前