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