python声明类时继承不继承object类的区别
不加的叫做经典类或旧式类,但是现在python3的类都默认是继承了object的,所以可写可不写
下面举个例子说明:
- __class__功能和type()函数一样,都是查看对象所在的类。
- __class__可以套用
在python3的环境下运行:
#coding:utf-
#不继承
class Car():
pass #继承
class Bag(object):
pass if __name__ == "__main__":
car = Car()
bag = Bag()
print('实例所在类')
print(type(car))
print(type(bag)) print('类所在类')
print(type(Car))
print(type(Bag)) print('实例所在类')
print(car.__class__)
print(bag.__class__)
print(bag.__class__.__class__)#实例所在类所在的类 print('类所在类')
print(Bag.__class__)
print(Car.__class__) # 类的类型都是type
返回:
/Users/user/PycharmProjects/python3/venv/bin/python /Users/user/PycharmProjects/python3/test.py
实例所在类
<class '__main__.Car'>
<class '__main__.Bag'>
类所在类
<class 'type'>
<class 'type'>
实例所在类
<class '__main__.Car'>
<class '__main__.Bag'>
<class 'type'>
类所在类
<class 'type'>
<class 'type'> Process finished with exit code
可见结果是一样的,说明python3中有没有继承都一样,因为底层已经帮你继承了
如果我使用的是python2的环境来运行,返回内容为:
(deeplearning2) userdeMacBook-Pro:python3 user$ python test.py
实例所在类
<type 'instance'>
<class '__main__.Bag'>
类所在类
<type 'classobj'>
<type 'type'>
实例所在类
__main__.Car
<class '__main__.Bag'>
<type 'type'>
类所在类
<type 'type'>
Traceback (most recent call last):
File "test.py", line , in <module>
print(Car.__class__) # 类的类型都是type
AttributeError: class Car has no attribute '__class__'
⚠️python2不支持 类名.__class__
可见如果不继承object,实例的类型为instance类,类的类型为classobj类
而继承object的类,类的类型都是type类
除此之外还有一个区别就是内置函数的不同:
#coding:utf-
#不继承
class Car():
pass #继承
class Bag(object):
pass if __name__ == "__main__":
car = Car()
bag = Bag()
print(dir(car))
print(dir(bag))
在python3中都是相同的,这里就不展示了。但是如果是在python2的环境下运行,返回:
(deeplearning2) userdeMacBook-Pro:python3 user$ python test.py
['__doc__', '__module__']
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
可见继承了object类的类,有更多的内置函数可以使用,当你想要完成一些复杂操作的时候就很有用了
python声明类时继承不继承object类的区别的更多相关文章
- python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)
先来讲一个例子 老师有生日,怎么组合呢? class Birthday: # 生日 def __init__(self,year,month,day): self.year = year self.m ...
- 第10章 接口、继承与多态----Object类
在Java中,所有的类都直接或间接继承了java.lang.Object类.Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类.当创建一个类时,总是在继承,除非某个类已经指定要 ...
- JDK1.8源码(一)——java.lang.Object类
本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...
- Java核心技术第五章——2.Object类
Object类:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的.但是并不需要这样写: public class Emloyee extends Object ...
- JDK1.8源码阅读笔记(1)Object类
JDK1.8源码阅读笔记(1)Object类 Object 类属于 java.lang 包,此包下的所有类在使⽤时⽆需⼿动导⼊,系统会在程序编译期间⾃动 导⼊.Object 类是所有类的基类,当⼀ ...
- Java常用类(一)之Object类详解
大家都知道Object是所有类的父类,任何类都默认继承Object 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省 ...
- Java温故而知新(7)Object类及其方法讲解
一.java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...
- java中的Object类和其clone()
1.Object是所有类的父类,任何类都默认继承Object,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省略了extends Object关键字. ...
- Java Object类的toString()方法
Java只要定义一个类,那么它都在继承,没有说明它在继承哪个类的时候,则默认继承java.lang.Object类,也就是说Object类是所有类的父类.看下面一段代码. public class O ...
随机推荐
- 安装k8s,使用root帐号的初始化脚本
现在稳定性差不多了.可以总结一下了. 真正使用时,有几个地方,还是确认一下,再正式运行吧. #!/bin/bash # Version V0. ---: ;fi K8S_VERSION="1 ...
- 重装windows10系统的教程
1.首先从官网上下载一个win10的系统, 2.准备一个8GB的移动U盘,下载好的镜像文件烧录在这个U盘, 3.按照不同型号的机型,使用不同的按键进入BOIS模式,然后选中U盘作为启动项,读取出来这个 ...
- VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中
Dim fso,f,a set oExcel = CreateObject( "Excel.Application" ) oExcel.Visible = false '4) 打开 ...
- Linux命令基础3-cd命令
cd 到带空格的文件夹 [root@cctg-sjc16-grafana ccatgbld]# cd 'my test' [root@cctg-sjc16-grafana my test]# cd . ...
- 求序列A中每个数的左边比它小的数的个数(树状数组)
给定一个有N个正整数的序列A(N<=10^5,A[i]<=10^5),对序列中的每一个数,求出序列中它左边比它小的数的个数. 思路:树状数组的经典应用(裸题) #include <i ...
- js中检测类型问题
<script> // var str = '少壮不努力,老大徒伤悲'; // console.log(str instanceof String); // consol ...
- 性能测试解读:Kyligence vs Spark SQL
全球各种大数据技术涌现的今天,为了充分利用大量数据获得竞争优势,企业需要高性能的数据分析平台,可靠并及时地提供对海量数据的分析见解.对于数据驱动型企业,在海量数据上交互式分析的能力是非常重要的能力之一 ...
- H3CNE学习5 STP
一.STP 1.概念 2.STP开机默认会运行 二.STP操作 1.原理 2.根桥选举,首先比前面的ID,谁小谁就是根桥,如果ID一样就比较mac,谁小谁就是根桥 可以手动修改优先级,图中可以将swA ...
- 历史相关API
一.history对象 ①history.back()移动到上一个访问页面,等同于浏览器的后退键. ②history.forward()动到下一个访问页面,等同于浏览器的前进键. ③history.g ...
- PHP安装之configure的配置参数
1.生成环境安装配置如下 要求安装如下库: imagickgdmysqlmysqlimysqlndphalconPharsoapsocketsxwebxsvczipzlib 具体查看 vim php- ...