類定義最簡(jiǎn)單的形式如下:
classClassName:
進(jìn)入類定義部分后,會(huì)創(chuàng)建出一個(gè)新的命名空間,作為局部作用域——因此,所有的賦值成為這個(gè)新命名空間的局部變量。特別是函數(shù)定義在此綁定了新的命名。類定義完成時(shí)(正常退出),就創(chuàng)建了一個(gè)類對(duì)象。基本上它是對(duì)類定義創(chuàng)建的命名空間進(jìn)行了一個(gè)包裝;原始的局部作用域(類定義引入之前生效的那個(gè))得到恢復(fù),類對(duì)象在這里綁定到類定義頭部的類名(例子中是ClassName)。
類對(duì)象支持兩種操作:屬性引用和實(shí)例化。屬性引用的使用和Python中所有的屬性引用一樣的標(biāo)準(zhǔn)語(yǔ)法:obj.name。類對(duì)象創(chuàng)建后,類命名空間中所有的命名都是有效屬性名。類的實(shí)例化使用函數(shù)符號(hào)。只要將類對(duì)象看作是一個(gè)返回新的類實(shí)例的無(wú)參數(shù)函數(shù)即可。如下所示:
classMyClass:
"""Asimpleexampleclass"""
id=12345
def__init__(self,realpart,imagpart):
self.r=realpart
self.i=imagpart
deff(self):return'helloworld'
if__name__=="__main__":x=MyClass(3.0,-4.5)
那么MyClass.id和MyClass.f是有效的屬性引用(MyClass.r不屬于類對(duì)象的有效引用,屬于實(shí)例的有效引用),分別返回一個(gè)整數(shù)和一個(gè)方法對(duì)象。也可以對(duì)類屬性賦值,可以通過(guò)給MyClass.id賦值來(lái)修改它。MyClass()是一個(gè)新的類實(shí)例并將該對(duì)象賦給局部變量x。類的實(shí)例化操作會(huì)自動(dòng)為新創(chuàng)建的類實(shí)例調(diào)用__init__()方法。
按照定義,類中所有(用戶定義)的函數(shù)對(duì)象對(duì)應(yīng)它的實(shí)例中的方法。在例子中,x.f是一個(gè)有效的方法引用,因?yàn)镸yClass.f是一個(gè)函數(shù)。但x.id不是,因?yàn)镸yClass.id不是函數(shù)。不過(guò)x.f和MyClass.f不同--它是一個(gè)方法對(duì)象,不是一個(gè)函數(shù)對(duì)象。而且x.f是一個(gè)方法對(duì)象,它可以存儲(chǔ)起來(lái)以后調(diào)用。下面的例子會(huì)不斷的打印helloworld。
xf=x.f
whileTrue:
printxf()
以上內(nèi)容為大家介紹了python初始類以及一些說(shuō)明,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。