python定义类()中写object和不写的区别

这里需要说明一下:

  • python3中,类定义默认继承object,所以写不写没有区别

  • 但在python2中,并不是这样

所以此内容是针对python2的,当然python3默认继承,不代表我们就傻乎乎的让程序自动继承,自己却不知道其底层区别,所以了解此内容还是很有必要的!

测试代码如下:

# -.- coding:utf-8 -.-class Person:"""不带object"""name = "zhengtong"class Animal(object):"""带有object"""name = "chonghong"if __name__ == "__main__":x = Person()print "Person", dir(x)y = Animal()print "Animal", dir(y)

输出如下:

Person ['__doc__', '__module__', 'name']
Animal ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']

Person类很明显能够看出区别,不继承object对象,只拥有了__doc__ , module 和 自己定义的name变量, 也就是说这个类的命名空间只有三个对象可以操作.

Animal类继承了object对象,拥有了好多可操作对象,这些都是类中的高级特性。

对于不太了解python类的同学来说,这些高级特性基本上没用处,但是对于那些要着手写框架或者写大型项目的高手来说,这些特性就比较有用了,比如说tornado里面的异常捕获时就有用到__class__来定位类的名称,还有高度灵活传参数的时候用到__dict__来完成等。

  • python2中不继承object的类叫经典类,继承object的类叫做新式类。

  • 我们平时写程序时,不妨养成良好的习惯,将object类继承上。

python定义类()中写object和不写的区别相关推荐

  1. python的类中 _、__和__xx__的区别

    _xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范. Python中 ...

  2. python的class(类)中的object是什么意思?

    原文地址:https://blog.csdn.net/DeepOscar/article/details/80947155 那写object和不写object有什么区别? 好的,再用代码来理解它们的区 ...

  3. Python 定义类属性

    在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的c ...

  4. java面试题2 牛客:定义类中成员变量时不可能用到的修饰是

    懵逼树上懵逼果,懵逼树下你和我 第二题 定义类中成员变量时不可能用到的修饰是() A final B void C protected D static 一看到这道题,有点慌了,直接选c,很显然,我又 ...

  5. Python 同一个类中不同函数相互调用

    本文采取:Python的类中函数方法相互调用的两种方式_狗哥的博客-CSDN博客 __metaclass__=type class Stu:name=Noneage=Noneschool=" ...

  6. python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别

    一.@classmethod 和 @staticmethod 1.staticmethod 作用:让类中的方法变成一个普通函数(普通函数没有绑定在任何一个特定的类或者实例上.所以与不需要对象实例化就可 ...

  7. AnnotationConfigUtils 处理注解Bean 定义类中的通用注解

    AnnotationConfigUtils 类的processCommonDefinitionAnnotations()在向容器注册Bean 之前,首先对注解Bean 定义类中的通用Spring 注解 ...

  8. Python 自定义类中NameError错误的解决

    Python 自定义类中NameError错误的解决 自定义类之后,python中常常有莫名其妙的NameError提示出错.经尝试后发现,在修改类代码并保存之后,光重新import类是不够的,需要重 ...

  9. thrift如何定义Java中的object类型

    目录 thrift如何定义Java中的Object类型 方法一:使用联合(union) 方法二:使用特殊类型(binary) 终极方法:序列化 thrift如何定义Java中的Object类型 由于t ...

最新文章

  1. unknown builtin op: aten::Tensor
  2. 12v60ah锂电池组装图_锂电池基本参数,结合电动自行车电池应用分析
  3. 安装完matlab7.0(2009版本问题)但无法运行
  4. 小巧优美的ORM框架-doodads
  5. HAL驱动库学习-ADC
  6. Minimum Diameter Tree
  7. GDCM:gdcm::ExplicitDataElement的测试程序
  8. request的简介和运行环境
  9. centos中的配置文件
  10. 快速了解什么是CI/CD
  11. fastadmin 批量上传不成功_shopee批量上传产品步骤
  12. 在Docker上搭建ELK+Filebeat日志中心
  13. 陕西2020行政区划调整_陕西2020行政区划调整
  14. 看了那些 Google 大神 Jeff Dean 的传说后,我跪了!
  15. 围成面积(信息学奥赛一本通 - T1359)
  16. Python量化交易平台:QMT (日内交易策略示例)
  17. 传统医美身处风口浪尖,互联网医美如何拯救?
  18. 【文献阅读】Pre-Training With Whole Word Masking for Chinese BERT
  19. 单片机小白学步系列(八) 用面包板搭建实验电路
  20. DBSCAN聚类——Python实现

热门文章

  1. 全国大学智能车竞赛证书编号规范
  2. 商品规格可选怎么设计_商品模块数据库表解析(一)
  3. mysql必知必会_《MySQL必知必会》学习小结
  4. mysql中堆和栈_堆和栈的区别
  5. curl抓取页面是乱码 php_php curl 获取网页内容 中文乱码
  6. c语言printf输出格式顶格,c语言printf()输出格式[共6页].pdf
  7. 驱动操作硬件的根本操作
  8. php字符串中有特殊符号怎么处理,PHP字符串中特殊符号的过滤方法介绍
  9. ii 组合总和_40. 组合总和 II
  10. 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(频域方法)