python新式類和經(jīng)典類的區(qū)別實例分析
本文實例講述了python新式類和經(jīng)典類的區(qū)別。分享給大家供大家參考,具體如下:
新式類就是 class person(object): 這種形式的, 從py2.2 開始出現(xiàn)的
新式類添加了:
__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.
新式類的出現(xiàn), 除了添加了大量方法以外, 還改變了經(jīng)典類中一個多繼承的bug, 因為其采用了廣度優(yōu)先的算法
Python 2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object才是新式類
python 3.x中默認(rèn)都是新式類,經(jīng)典類被移除,不必顯式的繼承object
粘貼一段官網(wǎng)上的作者解釋

是說經(jīng)典類中如果都有save方法, C中重寫了save() 方法, 那么尋找順序是 D->B->A, 永遠(yuǎn)找不到C.save()
代碼演示:
#!/usr/bin/env python3
#coding:utf-8
'''
新式類和經(jīng)典類的區(qū)別, 多繼承代碼演示
'''
class A:
def __init__(self):
print 'this is A'
def save(self):
print 'save method from A'
class B:
def __init__(self):
print 'this is B'
class C:
def __init__(self):
print 'this is c'
def save(self):
print 'save method from C'
class D(B, C):
def __init__(self):
print 'this is D'
d = D()
d.save()
結(jié)果顯示
this is D
save method from C
注意: 在python3 以后的版本中, 默認(rèn)使用了新式類, 是不會成功的
另外: 經(jīng)典類中所有的特性都是可讀可寫的, 新式類中的特性只讀的, 想要修改需要添加 @Texing.setter
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計入門與進階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
linux系統(tǒng)使用python監(jiān)測網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出
這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)測網(wǎng)絡(luò)接口獲取網(wǎng)絡(luò)的輸入輸出信息,大家參考使用吧2014-01-01
keras 自定義loss損失函數(shù),sample在loss上的加權(quán)和metric詳解
這篇文章主要介紹了keras 自定義loss損失函數(shù),sample在loss上的加權(quán)和metric詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python利用pdfplumber實現(xiàn)讀取PDF寫入Excel
pdfplumber專注PDF內(nèi)容提取,例如文本(位置、字體及顏色等)和形狀(矩形、直線、曲線),還有解析表格的功能。本文主要為大家介紹如何利用pdfplumber實現(xiàn)讀取PDF寫入Excel,需要的可以參考一下2022-06-06
Python數(shù)學(xué)建模PuLP庫線性規(guī)劃進階基于字典詳解
在大規(guī)模的規(guī)劃問題中,這樣逐個定義變量和設(shè)置模型參數(shù)非常繁瑣,效率很低。Pulp 庫提供了一種快捷方式,可以結(jié)合 Python語言的循環(huán)和容器,使用字典來創(chuàng)建問題2021-10-10
詳解Pytorch如何利用yaml定義卷積網(wǎng)絡(luò)
大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)都是直接通過寫一個Model類來定義的,這樣寫的代碼其實是比較好懂,也很方便。但是本文將介紹另一個方法:利用yaml定義卷積網(wǎng)絡(luò),感興趣的可以了解一下2022-10-10

