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 ...
随机推荐
- Java—网络编程总结(整理版)
1. 概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统.网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行 ...
- 十五.ProtoBuf3的基础总结
转自: https://blog.csdn.net/u011518120/article/details/54604615 定义一个消息类型 指定字段类型 分配标识号 指定字段规则 添加更多消息类型 ...
- jquery中ajax跨域加载
今天学习ajax跨域加载,先来一段代码,异步加载的链接是爱奇艺的开源,我直接拿来用作测试 <!DOCTYPE html> <html lang="en"> ...
- Tensorflow细节-P89-collection的使用
知识总结 (1)再次注意summary的使用 (2)x = rdm.rand(dataset_size, 2) y_ = [[x1**2 + x2**2] for (x1, x2) in x]这里的问 ...
- IDEA打开项目时,java文件左下角J图标的问题
idea打开项目时,所有的java文件左下角出现J图标,如下图: 说明项目的资源路径配置有问题,打开Project Structure,如下图: 进行资源路径配置,即可解决问题,正确配置如下:
- webpack开发环境速度优化
随着项目的增大,项目运行速度会越来越慢,导致影响开发进度.需要提升开发时代码的运行速度. 1. ScopeHoisting作用域提升 该插件在production模式下默认开启.development ...
- C 利用移位运算符 把十进制转换成二进制
#include <stdio.h> int main(void){ //利用移位运算符 把十进制转换成二进制 int c; printf("输入数字:");//8 s ...
- LibreOJ #526. 「LibreOJ β Round #4」子集
二次联通门 : LibreOJ #526. 「LibreOJ β Round #4」子集 /* LibreOJ #526. 「LibreOJ β Round #4」子集 考虑一下,若两个数奇偶性相同 ...
- 深度Linux /etc/profile 环境变量生效问题
/etc/profile 环境变量生效问题 设置了环境变量后 ,使用source /etc/profile生效后,每次关闭终端后,都需要重新输入source /etc/profile命令使环境变量生效 ...
- word 插入表格,位置不在最左边
首先想到的是 样式的问题.