以前版本 ~ python 2.1蛮穿,我們只能使用經(jīng)典類蓉坎。
python 2.2 ~ 最新版本黎烈, 我們可以使用新式類了垒手。
新式類被賦予了很多新的特性(如:統(tǒng)一了types和classes)蒜焊,并改變了以往經(jīng)典類的一些內(nèi)容(如:改變了多繼承下方法的執(zhí)行順序)
建議從現(xiàn)在開(kāi)始,使用python的新式類
1. 經(jīng)典類
沒(méi)有繼承的類,
注意:如果經(jīng)典類被作為父類科贬,子類調(diào)用父類的構(gòu)造函數(shù)時(shí)會(huì)出錯(cuò)泳梆。【TypeError: must be type, not classobj】
#基類(經(jīng)典類)
class Person:
def __init__(self):
print "Hi, I am a person. "
#子類
class Student(Person):
def __init__(self):
super(self.__class__, self).__init__()
if __name__ == "__main__":
student = Student()
#出錯(cuò)啦榜掌!TypeError: must be type, not classobj
2. 新式類
每個(gè)類都繼承于一個(gè)基類优妙,可以是自定義類或者其它類,如果什么都不想繼承憎账,那就繼承于object
如果想用super調(diào)用父類的構(gòu)造函數(shù)套硼,請(qǐng)使用新式類!
#基類(新式類)
class Person(object):
def __init__(self):
print "Hi, I am a person."
#子類
class Student(Person):
def __init__(self):
super(self.__class__, self).__init__()
if __name__ == "__main__":
student = Student()