首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python新式和旧式的区别?

废话不多说,开始今天的题目: 问:说说Python新式和旧式的区别? 答:Python分两种:旧式新式 。...python新式是从2.2版本引进来的,可以将之前的叫做经典或者旧式新式是官方为了统一和实例引入的 。...:pass 三种写法并无区别,推荐第一种 但是在Python2.x中,默认都是经典,只有显式继承了object才是新式,即: class Person(object):pass 新式写法 class...Person():pass 经典写法 class Person:pass 经典写法 为了确保在Python2.x中使用的是新式,有两种以下方法: 元,在模块代码的最前面加入如下代码 __metaclass...都从内建object直接或者间接地继承。 在Python3里面,不存在这些问题了,默认都是新式了。 如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

42910

Python - 面向对象编程 - 新式和旧式

object object 是 Python 为所有对象提供的父,默认提供一些内置的属性、方法;可以使用 dir 方法查看 新式 以 object 为父,推荐使用 在 Python 3.x 中定义时...,如果没有指定父,会默认使用 object 作为该类的父 所以 Python 3.x 中定义的都是新式 旧式 不以 object 为父,不推荐使用 在 Python 2.x 中定义,如果没有指定父...,不会使用 object 作为基 新式和旧式的区别 在多继承时,会影响到方法搜索顺序 MOR 重点 为了保证编写的代码能够同时在 Python2.x 和 Python 3.x 中运行 建议在定义时...MRO 算法,多继承场景下,方法搜索顺序会有问题 MRO 详解:https://www.cnblogs.com/poloyy/p/15226424.html 新式 手动继承 object ,拥有...object 的属性、方法 Python 3.x 中声明 默认就是新式 class A: pass a = A() print(dir(a)) # 输出结果 ['__class_

19620
您找到你想要的搜索结果了吗?
是的
没有找到

python新式和经典的区别实例分析

本文实例讲述了python新式和经典的区别。...分享给大家供大家参考,具体如下: 新式就是 class person(object): 这种形式的, 从py2.2 开始出现的 新式添加了: __name__ is the attribute’s...新式的出现, 除了添加了大量方法以外, 还改变了经典中一个多继承的bug, 因为其采用了广度优先的算法 Python 2.x中默认都是经典,只有显式继承了object才是新式 python.../usr/bin/env python3 #coding:utf-8 ''' 新式和经典的区别, 多继承代码演示 ''' class A: def __init__(self):...以后的版本中, 默认使用了新式, 是不会成功的 另外: 经典中所有的特性都是可读可写的, 新式中的特性只读的, 想要修改需要添加 @Texing.setter 更多关于Python相关内容感兴趣的读者可查看本站专题

73641

继承、派生、新式与经典

sal#派生出的属性 注意:两种方式不要混着使用 新式与经典 新式与经典(了解)(面试会问) 在python2中才有经典,没有继承object的都是经典。...python3中都是新式,继承object的都是新式,py3中默认继承object。...__mro__) #只有新式才有这个属性可以查看线性列表,经典没有这个属性 #新式继承顺序:F->D->B->E->C->A #经典继承顺序:F->D->B->A->E->C #python3中统一都是新式...- super是一个特殊的,在子类中调用super()会得到一个特殊的对象, 8.什么经典新式: 继承object的都称之为新式....在python2中,凡是没有继承object的都是经典. 9.在多继承的情况下形成的钻石继承 (继承顺序) - 经典: 深度优先 - 新式: 广度优先

53720

Python面向对象特性 — 多继承【多继承顺序、新式和经典

(在python3中object是所有的基,也就是只要定义一个,这个的最终基都是object,简单来讲object是python中所有的祖宗) 总结: 在搜索方法时,是按照__mro__...---- 二、新式和旧式(经典)【科普】 object是python为所有对象提供的基,提供一些内置的属性和方法,可以使用dir函数来查看。...新式: 以object为基,推荐使用。 经典: 不以object为基,不推荐使用。...新式和经典在便宜thin2.x和Python3.x之间的区别: 在python3.x中定义时,如果没有指定父,会默认使用object作为该类的基python3.x中定义的都是新式。...基于Python2.0 2.基于Python3.x 新式和经典在多继承时,会影响到方法的搜索顺序。

49630

的封装,内的方法装饰器,的方法修改与删除装饰器,经典新式

装饰的函数装饰函数名字必须和方法名字相同,方法名修改,会执行这个装饰的函数, #coding=utf-8 # ############### 定义 ############### class Goods: """python3...中默认继承objectpython2、3执行此程序的结果不同,因为只有在python3中才有@xxx.setter @xxx.deleter """ @property...,其对应被 @property 修饰的方法 新式中的属性有三种访问方式,并分别对应了三个被 @property、@方法名.setter、@方法名.deleter 修饰的方法 由于新式中具有三种访问方式....经典新式 1.定义 在python2中,如果明确写了继承object,那么这个就是新式;如果没有写,那么就是旧式(经典)。...在python3中,不管写没写object,这个都是新式。 2.调用顺序 经典是深度优先 ? 新式是广度优先 ?

1.1K30

python

用来描述具有相同的属性和方法的对象的集合。python中的就是对象。...self不是代表,而是代表的是实例。同时在继承时调用父的init()方法。 new() 函数只能用于从object继承的新式。 这里扯一嘴,什么是新式与旧式?...python2.1之前只存在旧式 #新式 class A(object): pass #旧式 class A: pass 但是在python3中只存在新式。...新式的MRO(method resolution order 基搜索顺序)算法采用C3算法广度优先搜索,而旧式的MRO算法是采用深度优先搜索 新式相同父只执行一次构造函数,经典重复执行多次。...Python内置类属性 dict : 的属性(包含一个字典,由的数据属性组成) doc :的文档字符串 name: 名 module: 定义所在的模块(的全名是'main.className

1K30

python

一、的简述 时面向对象编程的核心内容。通常把具有相同特征(数据元素)与行为(功能)的事物描述定义为一个是一个抽象的概念,把实例化既可以得到一个对象。...因此,对象的抽象是的具体化就是对象,也可以说的实例是对象,实际上就是一种数据类型。 具有属性,它是对象的状态的抽象,用数据结构来描述的属性。...在这里可以看到,有两种属性:数据属性,行为属性。在中行为属性一般称为“方法”。...这里要注意几点: 1)方法的第一个参数不用传值,但必须在定义,因为python解释器,做了这样的一件事,自动把调用的对象当作第一个参数传值给方法,通常定义为self 2)对象访问属性的过程,查找属性__...xx变为_classname__xx),兼具_xx的特性 4、__xx__:前后双下划线,用户名空间的魔法对象或属性,例如:__init__,一般不要自己定义这样的变量名 5、xx_:单后置下划线,与python

68130

Python

Python是一门面向对象的语言,对于面向对象语言来说,最重要的概念就是(Class)和实例(Intance),所以python在创建一个或者一个对象是很容易的。...解释器自己会把实例变量传进去 3)在传递参数的时候,必须是传递两个参数,name和sex,不然报错;Self的参数不用传递,python自动会把Student实例化的a传递给第一个参数self 3....__init__方法不会调用 2)Python总是首先取子类中的方法,如果子类没有找到,才会去父中查找 3)子类和父都存在相同的run()方法时,子类的run()覆盖了父的run() 例子: class...Cat is running... 4.的方法重写 在python中继承中的一些特点: 1)在继承中基的构造(init()方法)不会被自动调用,它需要在其派生的构造中亲自专门调用。 ...区别于在中调用普通函数时并不需要带上self参数  3)Python总是首先查找对应类型的方法,如果它不能在派生(子类即当前)中找到对应的方法,它才开始到基(父)中逐个查找。

95320

python——

面向对象技术是几乎所有的现代化的语言都从语法层面进行直接支持的,而就是面向对象技术在现代编程语言中的实现。可以抽象现实,将现实中的事物抽象为。...另外,这个函数会在实例化对象的时候被调用。(类比于C++,其实该函数就是的构造函数)在Python中两边有双下划线的函数都是python默认的方法,用这种方式来避免和普通的方法发生冲突。...这个参数将在Python调用这个方法创建实例时,自动传入。每个和实例相关联的方法在被调用的时候,都会自动传入self参数。...其中,子类的get方法和set方法都是重写父的方法。 下面引用《python编程:从入门到实践》中的一段话,这段话值得被放在这里 模拟较复杂的物件(如电动汽车)时,需要解决一些有趣的问题。...这让你进入了程序员的另一个境界:解决上述问题时,从较高的逻辑层面(而不是语法层面) 考虑;考虑的不是 Python,而是如何使用代码来表示实物。

60720

python和元

python 和元详解 小麦麦子 2016-09-06 11:11:00        今天在网上看到一篇关于python语言中和元(metaclass)的一些讲解和简单运用,感觉对python...(一) python中的 今天看到一篇好文,然后结合自己的情况总结一波。 这里讨论的python,都基于python2.7x以及继承于object的新式进行讨论。...首先在python中,所有东西都是对象。这句话非常重要要理解元我要重新来理解一下python中的。...这个对象()自身拥有创建对象(通常我们说的实例,但是在python中还是对象)的能力。 为了方便后续理解,我们可以先尝试一下在新式中最古老厉害的关键字type。...如果有,那么Python会在内存中通过__metaclass__创建一个名字为Trick的对象,也就是Trick这个东西。

1.1K30

day 24-1 继承

__bases__) # python3 -新式 #没有继承父默认继承 object 单继承 ***** 人狗大战 可以发现下面有共同属性 #可以发现下面有共同属性 class Person:...self 参数 super().方法名 不需要自己传 self 正常的代码中 单继承 === 减少了代码的重复 继承表达的是一种 子类和父的关系 super 的用法   只在新式中有,python3...:     多继承寻找名字的顺序 : 新式广度优先,经典深度优先     新式中 有一个名 .mro 方法,查看广度优先的继承顺序     python3 中有一个 super 方法,根据广度优先的继承顺序查找上一个...经典中 深度优先 新式中 广度优先 python2.7 新式和经典共存,新式要继承 object python3 只有新式,默认继承 object 经典新式还有一个区别 mro...方法只在新式中存在   super 只在 python3 中存在   super 的本质 :不是单纯找父 而是根据调用者的节点位置的广度优先顺序来的

30220
领券