開發與維運

類的特殊方法init | Python從入門到精通:高階篇之二十四

查看上一節:類的屬性和方法

類的特殊方法init

首先來看一個示例:

class Person :
    def say_hello(self) :
         print('大家好!我是 %s' %self.name)

p1 = Person()
#手動向對象添加name屬性
p1.name='孫悟空'
p2 = Person()
p2.name='豬八戒'

p2.say_hello() 

執行結果為:
image.png
此時如果添加一個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()

執行結果為:
image.png
此時就完成了強制賦值,因為如果不給傳遞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學習站官方技術圈!

Leave a Reply

Your email address will not be published. Required fields are marked *