引言
object, type, class(用户自定义的类)三者的关系如图所示,下文将对该图进行解释:
1. 为什么说Python中一切皆对象
上图描述了Python中类和对象的关系,实际上Python中的类是类对象,本质上它也是一个对象。其中type函数是由type类实例化得到的,type类对象是由type函数生成的,class(用户自定义)类对象和object类对象也是由type函数生成的。
class A():
pass
print(type.__class__) # 生成type类对象的类
print(object.__class__) # 生成object类对象的类
print(A.__class__) # 生成A类对象的类
a = 1
print(int.__class__) # 生成int类对象的类,该类和type,object都是由type对象生成
print(a.__class__) # 生成a的类
输出为:
可知,type函数本身就属于一个对象。object, type, class(用户自定义)均为类对象,由type函数生成,可类比于对象a是由int函数生成。object, type, class(用户自定义的类)类实例化后生成其他对象,因此,在Python中一切皆对象。
注:在Python系统中object和class可以被实例化,type实例化会报错,因为系统默认type为type函数。
# 用户自定义类和object类可以成功实例化
class A():
pass
a = A()
b = object()
2. 继承关系
Python中的类有object, type, class(用户自定义的类)三种,object是所有类的父类,并且object没有父类,type和class(用户自定义类)继承了object类。
class A():
pass
print(object.__bases__)
print(type.__bases__)
print(A.__bases__)
输出为
()
(,)
(,)
查了一晚的资料加整理,凌晨4:57,晚安!
原文链接:https://blog.csdn.net/weixin_40511249/article/details/108354415