本章重点 type和class以及object
1. 了解 type
首先 type函数通常用来判断参数的类型 展示代码:
print(type(1)) #输出 <class 'int'> 因为 1 是 整型 的实例
print(type("字符串")) #输出 <class 'str'> 因为 "字符串" 是 str 的实例
print(type(10.1235)) #输出 <class 'float'> 因为 10.1235 是 float 的实例
print(type(True)) #输出 <class 'bool'>因为 True 是 bool 的实例
print(type([])) #输出 <class 'list'> 因为 [] 是 列表 的实例
print(type(())) #输出 <class 'tuple'> 因为 () 是 元组 的实例
print(type({})) #输出 <class 'dict'> 因为 {} 是 字典 的实例
上面的代码对python的基本数据类型进行的判断,每一次赋值都是创建类型的实例,实例又称之为对象!!
2. 结合 type 和 class
使用type判断实例和class所返回的值 附上代码:
class Demo:
pass
if __name__ == '__main__':
a = Demo()
print(type(a)) #输出 <class '__main__.Demo'> a 是 Demo对象的实例
print(type(Demo)) # 输出 <class 'type'>
print(type(list)) # 输出 <class 'type'>
print(type(int)) # 输出 <class 'type'>
#代码只演示到这里
# ...... 后续的一些类都是type的实例
先定一个结论,在Python中所有的类都是type类的对象,都是type的实例
3. type class 和 object超类
- 很多语言中object是所有类的父类,Python中也不例外,所有的类都继承object,上述代码所判断的类型全部都是对象(值是Python的类型的对象,类型是type的对象,大家都是对象),那么object是对象吗?type是对象吗?直接看代码:
class Demo:
pass
if __name__ == '__main__':
print(Demo.__bases__) #自定义的类 输出 (<class 'object'>,) 基类是object
print(type(object)) #输出 <class 'type'> object 是type 的实例
print(type.__bases__)#输出 (<class 'object'>,) type 的基类 object
print(type(type)) #输出 <class 'type'> type的实例是type
总结:
1. 自定义类的基类是object(所有类的基类)包括特殊的type
2. object 居然是type的实例(对象)
3. type 的实例(对象)居然是自己(上述结论正确)
4. 结合上述诠释了Python一切皆对象