IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
1、__init__()方法和創(chuàng)建實(shí)例
在Python中,每當(dāng)實(shí)例化一個(gè)類的新實(shí)例時(shí),都會(huì)自動(dòng)調(diào)用__init__()構(gòu)造方法,這個(gè)方法可以用于初始化某些變量。
構(gòu)造方法是完成實(shí)例初始化的魔法方法,方便統(tǒng)一管理屬性。構(gòu)造方法包括有參構(gòu)造方法和無(wú)參構(gòu)造方法。
無(wú)參構(gòu)造方法的基本語(yǔ)法格式如下:
class 類名(object):
def __init__(self):
self.xx = yy
有參構(gòu)造方法的基本語(yǔ)法格式如下:
class 類名(object):
def __init__(self, 參數(shù)1, 參數(shù)2):
self.xx = 參數(shù)1
self.yy = 參數(shù)2
__init__()方法的第一個(gè)參數(shù)必須是引用調(diào)用實(shí)例的self,但其實(shí)可以為第一個(gè)參數(shù)指定任意名稱,而不必為self。下面定義了一個(gè)Cat類,__init__()的功能僅僅是打印貓叫聲:
- >>> class Cat:
- ... def __init__(self): # self參數(shù)是必須的,且必須為第一個(gè)
- ... print('Meow')
- ...
以這個(gè)Cat類為“原型”,可以創(chuàng)建無(wú)數(shù)個(gè)該類的實(shí)例(實(shí)例化),創(chuàng)建實(shí)例的過(guò)程類似于函數(shù)調(diào)用:
- >>> mimi = Cat()
- Meow
- >>> miaomiao = Cat()
- Meow
當(dāng)實(shí)例化Cat類時(shí),自動(dòng)運(yùn)行__init__()構(gòu)造方法,打印出了“Meow”。這是因?yàn)開(kāi)_init__()方法總是在實(shí)例化時(shí)自動(dòng)運(yùn)行。
2、實(shí)例屬性
實(shí)例屬性是附加到類實(shí)例的屬性,在構(gòu)造方法中定義?梢允褂命c(diǎn)表示法訪問(wèn)實(shí)例屬性。例如,在構(gòu)造方法中定義名稱和年齡的屬性:
- >>> class Cat:
- ... def __init__(self): # 構(gòu)造方法
- ... self.name = 'Mimi' # 實(shí)例屬性
- ... self.age = 1 # 實(shí)例屬性
- ...
將Cat類實(shí)例化后訪問(wèn)實(shí)例屬性:
- >>> mimi = Cat()
- >>> mimi.name
- 'Mimi'
- >>> mimi.age
- 1
也可以使用點(diǎn)表示法設(shè)置實(shí)例屬性:
- >>> mimi = Cat()
- >>> mimi.name = 'miaomiao'
- >>> mimi.age = 2
- >>> mimi.name
- 'miaomiao'
- >>> mimi.age
- 2
但更常用的做法是,通過(guò)構(gòu)造方法指定實(shí)例屬性的值。構(gòu)造方法除了self參數(shù),還可以包含其他參數(shù):
- >>> class Cat:
- ... def __init__(self, name, age):
- ... self.name = name
- ... self.age = age
- ...
- >>> mimi = Cat('Mimi', 1) # 創(chuàng)建一個(gè)Cat實(shí)例,name為'Mimi',age為1
- >>> mimi.name
- 'Mimi'
- >>> mimi.age
- 1
- >>> miaomiao = Cat('Miaomiao', 3)
- >>> miaomiao.name
- 'Miaomiao'
- >>> miaomiao.age
- 3
與給函數(shù)的參數(shù)設(shè)置默認(rèn)值類似,還可以給實(shí)例屬性設(shè)置默認(rèn)值。如果在創(chuàng)建實(shí)例時(shí)未提供這些值,那么將在之后為其分配值:
- >>> class Cat:
- ... def __init__(self, age, name='Mimi'): # 給name設(shè)置默認(rèn)值
- ... self.name = name
- ... self.age = age
- ...
- >>> mimi = Cat(1) # 只提供了Cat的name屬性的值
- >>> mimi.name
- 'Mimi'
- >>> mimi.age
- 1
- >>> miaomiao = Cat(3, 'Miaomiao') # 如果提供值,那么覆蓋默認(rèn)值
- >>> miaomiao.name
- 'Miaomiao'
- >>> miaomiao.age
- 3
下面給出構(gòu)造方法指定實(shí)例屬性的另一個(gè)示例:
- >>> class Car(object):
- ... def __init__(self, color, length, width):
- ... self.color = color
- ... self.length = length
- ... self.width = width
- ...
- >>> falali = Car('白色', 4, 1.5)
- >>> print(falali.color)
- 白色
- >>> print(falali.length)
- 4
- >>> print(falali.width)
- 1.5
上述程序定義了一個(gè)Car類,該類有一個(gè)構(gòu)造方法,根據(jù)類實(shí)例化傳入的參數(shù),賦值實(shí)例屬性,即車(chē)的顏色、長(zhǎng)度和寬度。本例實(shí)例化時(shí),傳入了參數(shù)'白色'、4和1.5,分別對(duì)應(yīng)于車(chē)的顏色、長(zhǎng)度和寬度。最后打印實(shí)例的實(shí)例屬性。
由運(yùn)行結(jié)果可知,實(shí)例的三個(gè)實(shí)例屬性就是在創(chuàng)建實(shí)例時(shí)傳入的參數(shù)值。這是因?yàn)樵趧?chuàng)建實(shí)例時(shí),自動(dòng)運(yùn)行Car類中的__init__()構(gòu)造方法,將傳入的參數(shù)賦值給實(shí)例屬性。
更多內(nèi)容
>>本文地址:http://www.yceu.cn/zhuanye/2021/69064.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?
07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)07月15日Java
咨詢/試聽(tīng)07月15日Python+人工智能
咨詢/試聽(tīng)07月15日Web前端
咨詢/試聽(tīng)07月15日UI設(shè)計(jì)
咨詢/試聽(tīng)07月15日大數(shù)據(jù)
咨詢/試聽(tīng)