python新式類和經典類的區別例項分析

2022-10-03 12:21:09 字數 1351 閱讀 8439

新式類就是  class person(object): 這種形式的, 從py2.2 開始出現的

新式類新增了:

__name__ is the attribute's name.

__doc__ is the attribute's docstring.

__get__(object) is a method that retrieves the attribute value from object.

__set__(object, value) sets the attribute on object to value.

__delete__(object, value) deletes the value attribute of object.

新式類的出現, 除了新增了大量方法以外, 還改變了經典www.cppcns.com類中乙個多繼承的bug, 因為其採用了廣度優先的演算法

pyt程式設計客棧hon 2.x中預設都是經典類,只有顯式繼承了object才是新式類

python 3.x中預設都是新式類,經典類被移除,不必顯式的繼承object

貼上一段官網上的作者解釋

是說經典類中如果都有s**e方法, c中重寫了s**e() 方法,  那麼尋找順序是 d->b->a, 永遠找不到c.s**e()

**演示:

#!/usr/bin/env python3

#coding:utf-8

''' 新式類和經典類的區別, 多繼承**演示

'''class a:

def __init__(self):

print 'this is a'

def s**e(self):

print 's**e method from a'

class b:

def __init__(self):

print 'this is b'

cwww.cppcns.comlass c:

def __init__(self):

print 'this is c'

def s**e(self):

print 's**e method from c'

class d(b, c):

程式設計客棧 def __init__(self):

print 'this is d'

d = d()

d.s**e()

結果顯示

this is d

s**e method from c

注意: 在python3 以後的版本中, 預設使用了新式類, 是不會成功的

另外: 經典類中所有的特性都是可讀可寫的, 新式類中的特性唯讀的, 想要修改需要新增 @texing.setter

Python新式類和經典類的區別

從python2.2開始,python 引入了 new style class 新式類 新式類跟經典類的差別主要是以下幾點 新式類物件可以直接通過 class 屬性獲取自身型別 type python view plain copy coding utf 8 class e 經典類 pass cla...

python新式類和經典類的區別

父類或者以上有繼承的object就是新式類 沒有的則是經典類 1,新式類和經典類的區別 廣度優先和深度優先,這主要是在多類繼承的時候會使用到,如下多類繼承的d類對比 新式類 和 經典類 的區分在python 3之後就已經不存在,在python 3.x之後的版本,因為所有的類都派生自內建型別objec...

Python新式類和經典類的區別

從python2.2開始,python 引入了 new style class 新式類 新式類跟經典類的差別主要是以下幾點 新式類物件可以直接通過 class 屬性獲取自身型別 type python view plain copy coding utf 8 class e 經典類 pass cla...