在Python中撤卢,可以通過class關(guān)鍵字定義自己的類较幌,然后通過自定義的類對(duì)象類創(chuàng)建實(shí)例對(duì)象弄兜。
python中創(chuàng)建類
1? 創(chuàng)建一個(gè)Student的類,并且實(shí)現(xiàn)了這個(gè)類的初始化函數(shù)”__init__”:
class Student(object):
? ? ? ? ? ?count = 0
? ? ? ? ? ?books = []
? ? ? ? ? ?def __init__(self, name):
? ? ? ? ? ? ? ? ? ?self.name = name
1-1? 類構(gòu)造和初始化
class A(object):
? ? ? ? def __init__(self,*args, **kwargs):
? ? ? ? ? ? ? ? ? ? ? ? ? print "init %s" %self.__class__
? ? ? ? def __new__(cls,*args, **kwargs):
? ? ? ? ? ? ? ? ? ? ? ? ?print "new %s" %cls
? ? ? ? ? ? ? ? ? ? ? ? return object.__new__(cls, *args, **kwargs)
>> a = A()
從代碼的輸出可以看到正压,當(dāng)通過類實(shí)例化一個(gè)對(duì)象的時(shí)候欣福,”__new__”方法首先被調(diào)用,然后是”__init__”方法焦履。
對(duì)于”__new__”和”__init__”可以概括為:
?? ? ?“__new__”方法在Python中是真正的構(gòu)造方法(創(chuàng)建并返回實(shí)例)劣欢,通過這個(gè)方法可以產(chǎn)生一個(gè)”cls”對(duì)應(yīng)的實(shí)例對(duì)象,所以說”__new__”方法一定要有返回
?? ? ?對(duì)于”__init__”方法裁良,是一個(gè)初始化的方法凿将,”self”代表由類產(chǎn)生出來的實(shí)例對(duì)象,”__init__”將對(duì)這個(gè)對(duì)象進(jìn)行相應(yīng)的初始化操作