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