查看上一節:類的屬性和方法
類的特殊方法init
首先來看一個示例:
class Person :
def say_hello(self) :
print('大家好!我是 %s' %self.name)
p1 = Person()
#手動向對象添加name屬性
p1.name='孫悟空'
p2 = Person()
p2.name='豬八戒'
p2.say_hello()
執行結果為:
此時如果添加一個p3對象,但是不賦值name的話就會報錯。
目前來講, 對於Person類來說name是必須的, 並且每一個對象中的name屬性基本上都是不同;
而我們現在是將name屬性在定義為對象以後, 手動添加到對象中,這種方式很容易出現錯誤。
我們希望在設置對象的時候就必須創建name屬性,如果不設置對象將無法創建。
並且屬性的創建應該是自動完成的,而不是在創建對象之後手動完成。
在類中可以定義一些特殊方法(魔術方法),特殊方法都是以__
開頭,__
結尾的方法,特殊方法不需要我們自己調用。
不要嘗試去調用特殊方法,特殊方法將會在特殊的時刻自動調用。
學習特殊方法:
1.特殊方法什麼時候調用
2.特殊方法有什麼作用
init就是Python的一種特殊方法,會在對象創建以後離開執行,可以用來向新創建的對象中初始化屬性。
調用類創建對象時,類後邊的所有參數都會依次傳遞到init()中。
class Person :
def __init__(self,name):
# 通過self向新建的對象中初始化屬性
self.name = name
def say_hello(self):
print('大家好,我是%s'%self.name)
p1 = Person('孫悟空')
p2 = Person('豬八戒')
p3 = Person('沙和尚')
p4 = Person('唐僧')
p4.say_hello()
執行結果為:
此時就完成了強制賦值,因為如果不給傳遞name的話就會報錯。
通過上述的p1創建流程講解一下創建對象的流程:
p1 = Person()的運行流程
1.創建一個變量
2.在內存中創建一個新對象
3.__init__(self)方法執行
4.將對象的id賦值給變量
也就是說:
1、 init會在對象創建以後離開執行;
2、init可以用來向新創建的對象中初始化屬性;
3、調用類創建對象時,類後邊的所有參數都會依次傳遞到init()中。
到這裡類與對象就基本結束了,總結一下:
類的基本結構
class 類名([父類]) :
公共的屬性...
# 對象的初始化方法
def __init__(self,...):
...
# 其他的方法
def method_1(self,...):
...
def method_2(self,...):
...
...
練習:
嘗試自定義一個表示狗的類(Dog)
屬性:
name
age
gender
height
...
方法:
jiao()
yao()
run()
...
點擊查看配套學習視頻
獲取更多內容請訂閱Python學習站官方技術圈!