python3中的type与object
在python中,一切皆对象,应该怎么理解呢??
先来看几个例子:
[root@localhost ~]# python3
Python 3.6.3rc1 (default, Feb 26 2018, 22:34:25)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1 # 定义一个变量,值为1
>>> type(a) # 查看变量a的类型,可以看出变量a是由int类实例而来
<class 'int'>
>>> type(1) # 查看整数1的类型,结果也是由int类实例而来
<class 'int'>
>>> type(int) # 查看int类的类型,得出结论:int类型是由type类实例化而来
<class 'type'>
>>>
>>> str1 = 'aa' # 定义一个变量,值为'aa'字符串
>>> type(str1) # 查看变量str1的类型,可以看出变量str1是由str类实例而来
<class 'str'>
>>> type('aa') # 查看'aa'字符串的类型,结果也是由str类实例而来
<class 'str'>
>>> type(str) # 查看str类的类型,得出结论:str类型是由type类实例化而来
<class 'type'>
>>>
>>> class Goods: # 自定义一个Goods商品类
... pass
...
>>> good1 = Goods() # 实例化Goods类,得到实例化对象good1
>>> type(good1) # 查看good1的类型,可以看到是由Goods类实例化出来的
<class '__main__.Goods'>
>>> type(Goods) # 查看Goods类的类型,得出结论:Goods类是由type类实例化而来的
<class 'type'>
同理,我们也可以使用type方法查看list,tuple,dict,set等数据类型的类型,这些数据类型都是由type类实例化来的
>>> type(list)
<class 'type'>
>>> type(tuple)
<class 'type'>
>>> type(dict)
<class 'type'>
>>> type(set)
<class 'type'>
所以,可以得出结论:
在python3中,所有数据类型的变量都是由对应的类来创建的,而创建数据类型的类都是由type类实例化得到所以,python中所有的数据类型都是type类实例化来的
在上面的例子里,定义一个Goods类,然后根据Goods类实例化good1对象
>>> Goods.__bases__ # 查看Goods类的基类,结果为object类
(<class 'object'>,)
>>> class TestGoods(Goods): # 再定义一个TestGoods类,继承Goods类
... pass
...
>>> TestGoods.__bases__ # 查看TestGoods类的基类,结果显示为Goods类
(<class '__main__.Goods'>,)
所以,在定义类时,如果未指定类所继承的父类,其基类都是object
从上面的例子知道,所有数据类型的变量都是由对应的类来创建的
>>> int.__bases__ # 查看int类的基类,结果为int类是继承自object类的
(<class 'object'>,)
>>> str.__bases__ # 查看str类的基类,结果为str类是继承自object类的
(<class 'object'>,)
>>> tuple.__bases__ # 查看tuple类的基类,结果为tuple类是继承自object类的
(<class 'object'>,)
>>> list.__bases__ # 查看list类的基类,结果为list类是继承自object类的
(<class 'object'>,)
>>> dict.__bases__ # 查看dict类的基类,结果为dict类是继承自object类的
(<class 'object'>,)
>>> set.__bases__ # 查看set类的基类,结果为set类是继承自object类的
(<class 'object'>,)
所以,object是最顶层基类
通过查看python源码,也可以验证这个结论






在前面,已经知道,python所有数据类型的类型都是由type类实例化得到的,那么type类又是由什么实例化而来,type类的基类又是什么呢
>>> type(type) # 查看type的类型,结果也是type类
<class 'type'>
>>> type.__bases__ # 查看type的基类,结果为object
(<class 'object'>,)
通过查看源码,可以看到type类是继承自object的

由此可以知道,type是一个类,同时type也是一个对象
object类是所有类的基类,object类的基类又是什么呢??
>>> type(object) # 查看object的类型,结果为object类也是由type类实例化而来
<class 'type'>
>>> object.__bases__ # 查看object的基类,结果为object类的基类为空
()
综上所述,object与type和class的关系如下图所示

python3中的type与object的更多相关文章
- Python 中的type和object详解
1.python中的类 Python2.x 中的类分为两种,一种是所有继承自object的新式类,另外一种是经典类classobj, 新式类的写法: class A(object): pass 经典类 ...
- python中的type和object详解
关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<type 'object'>分别是什么? 用 ...
- type和object详解
python中的type和object详解 关于这篇博客 这篇博客主要描述Python的新风格对象(new-style objects),如下: <type 'type'>和<t ...
- Python中type与Object的区别
Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: clas ...
- Python中type和object
type 所有类是type生成的 a = 1 b = "abc" print("type a:{}".format(type(a))) print(" ...
- Python面试题之Python中type和object的关系
知乎上看到的提问: 两个是互为实例的关系,但不是互为子类的关系,只有type是object的子类,反之则不成立. 大牛说两者是蛋生鸡鸡生蛋的关系,但我还是不明白,有懂的麻烦解释一下, 希望不要给出外文 ...
- python 中type和object的关系
转自:https://segmentfault.com/a/1190000008938763 学习python的同学都知道这么几句话 object类是所有新式类的父类. type是所有类的类. 那么t ...
- python3中返回字典的键
我在看<父与子的编程之旅>的时候,有段代码是随机画100个矩形,矩形的大小,线条的粗细,颜色都是随机的,代码如下, import pygame,sys,random from pygame ...
- Python2和Python3中的字符串编码问题解决
Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...
随机推荐
- 「NOI2013」树的计数 解题报告
「NOI2013」树的计数 这什么神题 考虑对bfs重新编号为1,2,3...n,然后重新搞一下dfs序 设dfs序为\(dfn_i\),dfs序第\(i\)位对应的节点为\(pos_i\) 一个暴力 ...
- crontab计划任务实例
使用实例 实例1:每1分钟执行一次command 命令: * * * * * command 实例2:每小时的第3和第15分钟执行 命令: 3,15 * * * * command 实例3:在上午8点 ...
- MySQL架构备份
MySQL Replication 概述 集群的主要类型? 高可用集群(High Available Cluster, HA) 高可用集群是指通过特殊的软件把独立的服务器连接起来,组成一个能够提供故障 ...
- 关于package,import,和“找不到可以加载的主类”报错之间的关系
正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...
- C语言的第一堂课
感觉茂哥讲了很多,但是有些输入的语句还是没能记住 刚讲的都是概念,看来需要看一下表格,以及C语言的基础 有些意思还不能够理解 略显尴尬 回去把C语言书的各种概念理解一下……
- js实现点气球小游戏
二话不说直接贴代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 2018-2019-2 20165232 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
2018-2019-2 20165232 <网络对抗技术> Exp6 信息搜集与漏洞扫描 一.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 二.实践内容. 各种搜索技巧的应 D ...
- crm 一级菜单排序,二级菜单选中并且展开,非菜单权限的归属,权限粒度控制到按钮级别
排序 /rbac/templatetags/rbac.py from django import template from django.conf import settings import re ...
- input表单强制大小写
如题,在HTML页面中常常有遇到强制表单大小写的场景. 在css中设置,HTML页面元素引用就可以了 强制大写: .toUp{ text-transform:uppercase; } 强制小写: .t ...
- 关于 Duplicate detection rules 自动 unpublish 的问题
最近发现自己建立的 Duplicate detection rules 在 publish 之后,会不定时地变成 unpublish 的状态,经过几次测试后,发现是每次将开发中版本更新到测试的 sit ...