Python 为什么要继承 object 类

Python013

Python 为什么要继承 object 类,第1张

没有规定必须继承OBJECT类。OBJECT类只是面向对象语言继承精神的一种表现。例如OBJECTC,C++等语言在标准库中都将所有类的基类定义位OBJECT,这样的好处就是最大限度的利用代码重用的的精神。但是不通语言中的OBJECT类的作用又很不一样所以看看下面的介绍:回到PYTHON中为什么要集成OBJECT:low-levelconstructorsnamed__new__()–低级别的构造函数.Note:Python的class__init__并不是其他语言意义上的构造函数,在new创建实例后对实例属性初始化的函数.descriptors,ageneralizedwaytocustomizeattributeaccess–描述符.或者说描述符协议支持.descriptorprotocol__get__,__set__,__delete__等,可以阅读descriptor文档staticmethodsandclassmethods-静态方法和类方法properties(computedattributes)–属性访问settergetter.decorators(introducedinPython2.4)–装饰器.现在装饰器语法糖遍布各Python框架.slots–用户设置后可以限定实例的属性.在Python2中替代__dict__,可以节省近2/3内存,Python3中可以不因为优化内存使用率而使用slots,因为__dict__结构内存做了优化,Note:__dict__并不是Python意义上的内置的dict,其实是一个proxy类.anewMethodResolutionOrder(MRO)–MRO方法解析次序改变(由左递归改为C3算法)可能上面的你看着不太理解。通俗说一下py2.2后继承object的目的是使这个类成为newstyleclass,没有继承object的为传统classicclass,在本机进行了测试,环境为py2.7.3classFoo(object):passclassFoo1:passprinttype(Foo),type(Foo1)printdir(Foo)printdir(Foo1)printisinstance(Foo,object)printisinstance(Foo1,object)结果如下:['__class__','__delattr__','__dict__','__doc__','__format__','__getattribute__','__hash__','__init__','__module__','__new__','__reduce__','__reduce_ex__','__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__']['__doc__','__module__']TrueTrue(这个True有些疑问,Foo1不应是object的实例啊)

Python诞生与发展

Python作为当下大火的一门编程语言,深受众多程序员的喜爱,而追溯其发展始末还得从上世纪说起。Python是Guido Van Rossum (荷兰人吉多·范罗苏姆)于1989年开发推出。而开发这一编程语言背后还有个不为人知的小故事。1989年圣诞节期间,在阿姆斯特丹的吉多深感无聊与苦闷,作为一名资深的编程爱好者他决定开发一个新的脚本解释程序,作为编程界惯用的ABC语言的一种继承。

之所以选中Python作为该编程语言的名字,是源自于英国20世纪70年代首播的电视喜剧(Monty Python's Flying Circus),其中Guido 喜欢的一个表演团体—— Monty Python(巨蟒剧团)便以Python命名。

Python实际上是ABC语言的一种延伸发展,Guido在ABC语言的基础上纠正创新,在其基础上进行开放式设计,同时对编程过程进行简化,使得Python在原ABC语言的基础上更加简洁,易读。可扩展性相较于之前大幅提升。现今Python已经成为了时下最受欢迎的程序设计语言之一,很多知名大学采用Python来教授设计课程。Python第一个版本推出是在1991年,至今一直在不断更新与完善。

Python因其奉行极简主义,易于读写受众多人青睐。更令人称道的是Python作为一种开源软件不用花一分钱就能够实现编辑,同时Python兼容多平台,学习强度相对于其他编程语言而言是普遍公认的简单,在实际生活的各个领域均得到了广泛的应用。