1.類的構(gòu)造函數(shù),用于初始化類成員等,只能用 init ,不能換其他名字
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),五河網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:五河等地區(qū)。五河做網(wǎng)站價(jià)格咨詢:028-86922220
2. init 方法的意義: init 方法在類的一個(gè)對(duì)象被建立時(shí),馬上運(yùn)行。
def init (self, name):
xxxxxxxxxx
3.類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱,但是在調(diào)用這個(gè)方法的時(shí)候你不為這個(gè)參數(shù)賦值,Python會(huì)提供這個(gè)值。這個(gè)特別的變量指對(duì)象本身,按照慣例它的名稱是self。
4. init 不是構(gòu)造函數(shù),Python對(duì)象在調(diào)用 init 的時(shí)候已被構(gòu)造出來,稱為“初始化”比較合適。
5.如果子類的方法覆蓋了父類,想調(diào)用父類的方法怎么辦?
Python沒有super,很簡(jiǎn)單,直接“父類名.方法”即可。
題主所問的應(yīng)該是init構(gòu)造函數(shù)是否為類對(duì)象所有,答案實(shí)則不是這樣。python中由類構(gòu)建的對(duì)象不帶init函數(shù)(即不能由一個(gè)類的對(duì)象去構(gòu)造另一個(gè)對(duì)象)。
class?Person:
#?此處,兩個(gè)?下劃線?_?_
def?__init__(self,name,job):
self.name=name
self.job=job
bob=Person('Bob?Smith','dev')
print(bob.name,bob.job)
"""
共有以下二種方法
"""
##class?Foo(object):???
##?????def?__init__(self):?
##?????????self.val?=100
##?????????print(self.val)
##class?Foo2(Foo):?
##?????def?__init__(self):?
##?????????Foo.__init__(self)??#類調(diào)用實(shí)例方法時(shí),需要傳入self指代的實(shí)例?
##?????????print(self.val)
##
##if?__name__?==?'__main__':
##????foo2?=?Foo2()
class?Foo(object):???
def?__init__(self):?
self.val?=100
class?Foo2(Foo):?
def?__init__(self):?
super().__init__()??
print(self.val)
if?__name__?==?'__main__':
foo2?=?Foo2()
now.Time()這句是干嘛?你的Time class有這個(gè)方法嗎
你把錯(cuò)誤貼出來吧
哈哈,Time()這個(gè)方法你也要一起打出來啊,不然去哪里調(diào)用啊
不行,一個(gè)class只能有一個(gè)用于構(gòu)造對(duì)象的__init__函數(shù)
但python中的變量是無類型的,因此傳給__init__的參數(shù)可以是任何類型
python中的函數(shù)參數(shù)在定義時(shí)可以有默認(rèn)值,可以讓__init__函數(shù)接受多個(gè)參數(shù),在后面的一些參數(shù)給出默認(rèn)值的方法讓__init__接受不同個(gè)數(shù)的參數(shù),并且執(zhí)行類型檢查執(zhí)行不同的代碼,用上述方法實(shí)現(xiàn)類的構(gòu)造函數(shù)的多態(tài)性