-
今天学习Django时,遇到了类的多继承问题,由于自己是从Python3入门学习的,所以在类的声明时并未留意到基类object的书写与否 是否会对程序结果造成影响(事实上,并不会有所影响),但 是,在Python2中,基类object书写与否 会对结果造成很大的影响,这个知识点涉及到新式类、经典类的问题,虽然之前有所耳闻,但只限于耳闻。。。既然今天遇到了,就要好好研究下python2和python3中的新式类、经典类问题。
在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说:
class Person(object):pass
class Person():pass
class Person:pass
三种写法并无区别,推荐第一种但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:
class Person(object):pass
新式类写法
class Person():pass
经典类写法
class Person:pass
经典类写法他们最明显的区别在于继承搜索的顺序发生了改变,即
经典类多继承搜索顺序(深度优先):
先深入继承树左侧查找,然后再返回,开始查找右侧,如图所示:
先在水平方向查找,然后再向上查找,如图所示:
https://www.zhihu.com/question/22475395)
Python2和Python3中新式类、经典类(旧式类)的区别
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- python2与python3都有经典类和新式类这两种写法,在python2中经典类和新式类的继承方式不一样,在p...
- 一把壶|拳王邹市明败给草根木村翔,改变命运的金腰带 7月28日,邹市明在拳王赛中憾败日本的草根木村翔,输掉WBO金...