不加的叫做经典类或旧式类,但是现在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. linux系统编程之管道(三)

    今天继续研究管道的内容,这次主要是研究一下命名管道,以及与之前学过的匿名管道的区别,话不多说,进入正题: 所以说,我们要知道命名管道的作用,可以进行毫无关系的两个进程间进行通讯,这是匿名管道所无法实现 ...

  2. 织梦CMS5.7主动推送二次开发

    今天一个朋友叫我写个织梦的百度主动推送插件,实现的功能是:每发表或者更新一篇文章,都会触动主动推送,达到资源最新提交给百度进行抓取. 案例站点:奇迹私服 第一步:登入FTP,在/后台的文件夹/arti ...

  3. MyEclipse激活代码

    package TestCase; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  4. Linux Shell 如何获取参数

    $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示 ...

  5. springboot 2.1.6发布

    最新消息: Spring Boot 2.1.6 昨天正式发布了,日常更新一些依赖和修复一些 BUG,没什么硬菜! 重点来了,Spring Boot 1.5 将于今年 8 月结束使命,请尽快迁移到 Sp ...

  6. AJAX的具体使用

    一.GET请求 ①GET请求传递参数通常使用的是问号传参,即在请求地址上加上?参数,从而传递数据到服务端 ②一般在GET请求数据时,无需设置响应体,可以传null或者干脆不传 ③一般情况下URL传递的 ...

  7. python-图像目标监测(1)识别答题卡

    # -*- coding: utf-8 -*- """ Created on Thu Dec 20 16:05:10 2018 @author: leizhen.liu ...

  8. ELK教程1:ElasticSearch集群的部署ELK

    在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本篇文章将讲讲解如何部署ELK,然后讲解如何使用Filebeat采集Spring Boot的日志输出到Log ...

  9. 【转】Hive 修改 table、column

    表 1.重命名表重命名表的语句如下: ALTER TABLE table_name RENAME TO new_table_name 2.修改表属性: ALTER TABLE table_name S ...

  10. [ThinkPHP6.*安装 (草稿先发布,再维护)

    ThinkPHP6.0的安装,官方文档中有详细的说明,不过在安装之前,大家还是要做一些准备的,就是PHP本地开发环境 的搭建. 官方手册地址:https://www.kancloud.cn/manua ...