python定义类()中写object和不写的区别
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和不写的区别相关推荐
- python的类中 _、__和__xx__的区别
_xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范. Python中 ...
- python的class(类)中的object是什么意思?
原文地址:https://blog.csdn.net/DeepOscar/article/details/80947155 那写object和不写object有什么区别? 好的,再用代码来理解它们的区 ...
- Python 定义类属性
在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的c ...
- java面试题2 牛客:定义类中成员变量时不可能用到的修饰是
懵逼树上懵逼果,懵逼树下你和我 第二题 定义类中成员变量时不可能用到的修饰是() A final B void C protected D static 一看到这道题,有点慌了,直接选c,很显然,我又 ...
- Python 同一个类中不同函数相互调用
本文采取:Python的类中函数方法相互调用的两种方式_狗哥的博客-CSDN博客 __metaclass__=type class Stu:name=Noneage=Noneschool=" ...
- python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别
一.@classmethod 和 @staticmethod 1.staticmethod 作用:让类中的方法变成一个普通函数(普通函数没有绑定在任何一个特定的类或者实例上.所以与不需要对象实例化就可 ...
- AnnotationConfigUtils 处理注解Bean 定义类中的通用注解
AnnotationConfigUtils 类的processCommonDefinitionAnnotations()在向容器注册Bean 之前,首先对注解Bean 定义类中的通用Spring 注解 ...
- Python 自定义类中NameError错误的解决
Python 自定义类中NameError错误的解决 自定义类之后,python中常常有莫名其妙的NameError提示出错.经尝试后发现,在修改类代码并保存之后,光重新import类是不够的,需要重 ...
- thrift如何定义Java中的object类型
目录 thrift如何定义Java中的Object类型 方法一:使用联合(union) 方法二:使用特殊类型(binary) 终极方法:序列化 thrift如何定义Java中的Object类型 由于t ...
最新文章
- unknown builtin op: aten::Tensor
- 12v60ah锂电池组装图_锂电池基本参数,结合电动自行车电池应用分析
- 安装完matlab7.0(2009版本问题)但无法运行
- 小巧优美的ORM框架-doodads
- HAL驱动库学习-ADC
- Minimum Diameter Tree
- GDCM:gdcm::ExplicitDataElement的测试程序
- request的简介和运行环境
- centos中的配置文件
- 快速了解什么是CI/CD
- fastadmin 批量上传不成功_shopee批量上传产品步骤
- 在Docker上搭建ELK+Filebeat日志中心
- 陕西2020行政区划调整_陕西2020行政区划调整
- 看了那些 Google 大神 Jeff Dean 的传说后,我跪了!
- 围成面积(信息学奥赛一本通 - T1359)
- Python量化交易平台:QMT (日内交易策略示例)
- 传统医美身处风口浪尖,互联网医美如何拯救?
- 【文献阅读】Pre-Training With Whole Word Masking for Chinese BERT
- 单片机小白学步系列(八) 用面包板搭建实验电路
- DBSCAN聚类——Python实现
热门文章
- 全国大学智能车竞赛证书编号规范
- 商品规格可选怎么设计_商品模块数据库表解析(一)
- mysql必知必会_《MySQL必知必会》学习小结
- mysql中堆和栈_堆和栈的区别
- curl抓取页面是乱码 php_php curl 获取网页内容 中文乱码
- c语言printf输出格式顶格,c语言printf()输出格式[共6页].pdf
- 驱动操作硬件的根本操作
- php字符串中有特殊符号怎么处理,PHP字符串中特殊符号的过滤方法介绍
- ii 组合总和_40. 组合总和 II
- 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(频域方法)