不加的叫做经典类或旧式类,但是现在python3的类都默认是继承了object的,所以可写可不写

下面举个例子说明:

首先说明下__class__功能与用法:
  • __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类的区别的更多相关文章

  1. python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)

    先来讲一个例子 老师有生日,怎么组合呢? class Birthday: # 生日 def __init__(self,year,month,day): self.year = year self.m ...

  2. 第10章 接口、继承与多态----Object类

    在Java中,所有的类都直接或间接继承了java.lang.Object类.Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类.当创建一个类时,总是在继承,除非某个类已经指定要 ...

  3. JDK1.8源码(一)——java.lang.Object类

    本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...

  4. Java核心技术第五章——2.Object类

    Object类:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的.但是并不需要这样写: public class Emloyee extends Object ...

  5. JDK1.8源码阅读笔记(1)Object类

    JDK1.8源码阅读笔记(1)Object类 ​ Object 类属于 java.lang 包,此包下的所有类在使⽤时⽆需⼿动导⼊,系统会在程序编译期间⾃动 导⼊.Object 类是所有类的基类,当⼀ ...

  6. Java常用类(一)之Object类详解

    大家都知道Object是所有类的父类,任何类都默认继承Object 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省 ...

  7. Java温故而知新(7)Object类及其方法讲解

    一.java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...

  8. java中的Object类和其clone()

    1.Object是所有类的父类,任何类都默认继承Object,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省略了extends Object关键字. ...

  9. Java Object类的toString()方法

    Java只要定义一个类,那么它都在继承,没有说明它在继承哪个类的时候,则默认继承java.lang.Object类,也就是说Object类是所有类的父类.看下面一段代码. public class O ...

随机推荐

  1. AQS的子类在各个同步工具类中的使用情况

    AQS AQS(AbstractQueuedSynchronizer)是 java.util.concurrent的基础.J.U.C中宣传的封装良好的同步工具类Semaphore.CountDownL ...

  2. markdown锚点

    转:https://blog.csdn.net/u012260238/article/details/87815170 markdown 语法文档:https://www.w3cschool.cn/l ...

  3. 2019牛客多校第三场 F.Planting Trees

    题目链接 题目链接 题解 题面上面很明显的提示了需要严格\(O(n^3)\)的算法. 先考虑一个过不了的做法,枚举右下角的\((x,y)\),然后二分矩形面积,枚举其中一边,则复杂度是\(O(n^3 ...

  4. Bootstrap是什么意思?

    Bootstrap是一组用于网站和网络应用程序开发的开源前端(所谓“前端”,指的是展现给最终用户的界面.与之对应的“后端”是在服务器上面运行的代码)框架,包括HTML.CSS及JavaScript的框 ...

  5. sql server 中的表值函数和标量值函数

      顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例 ...

  6. Ubuntu下彻底卸载默认安装的mysql,自己手动下载安装MYSQL

    彻底卸载: sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-common sudo rm -rf ...

  7. Linux 命令集合之进程查看命令-软件安装命令-文件查找命令-主机修改命令

    1.dpkg 的使用 dpkg -s ssh 查看是否按装了ssh软件 dpkg -L ssh 查看ssh安装的关联目录结构和安装位置 dpkg -i vim.deb 本地离线安装vim编辑器 apt ...

  8. 2017.10.5 国庆清北 D5T1 拼不出的数

    题目描述 3 个元素的集合{5,1,2}的所有子集的和分别是0,1,2,3,5,6,7,8.发现最小的不能由该集合子集拼出的数字是4. 现在给你一个n个元素的集合,问你最小的不能由该集合子集拼出的数字 ...

  9. docker使用(一)

    windows家庭版 安装docker 查看原文地址(侵删,这里只是保存一用 doceker和vmware发生冲突时 运行下面命令并重启电脑: bcdedit /set hypervisorlaunc ...

  10. 36、将RDD转换为DataFrame

    一.概述 为什么要将RDD转换为DataFrame? 因为这样的话,我们就可以直接针对HDFS等任何可以构建为RDD的数据,使用Spark SQL进行SQL查询了.这个功能是无比强大的. 想象一下,针 ...