'__init__'和‘__name__’的用法

 

 


目錄

 

簡介

'__init__'的用法

‘__name__’的用法


簡介

Python模塊中通常會定義很多變量和函數,這些變量和函數相當於模塊中的一個功能,模塊被導入到別的文件中,可以調用這些變量和函數 

'__init__'的用法

1. 用法類似於JAVA的構造函數

代碼段如下:

class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print('Hello, my name is', self.name)

p = Person('Swaroop')
p.sayHi()

我們把__init__方法定義爲取一個參數name(以及普通的參數self)。在這個__init__裏,我們只是創建一個新的域name

初始化時並沒有專門調用__init__方法,只是在創建一個類的新實例的時候,把參數包括在圓括號內跟在類名後面,從而傳遞給__init__方法,這是這種方法的重要之處。它相當於JAVA裏面的構造函數。

2.  其可以被子類繼承或重寫

class NewOne(Person):
    def getName(self):
        return  self.name + ' NewOne'

if __name__ == '__main__':
    b = NewOne('hello')
    print(b.getName())

子類可以不重寫__init__,實例化子類時,會自動調用超類中已定義的__init__。 輸出爲

hello NewOne

 但如果重寫了__init__,實例化子類時,則不會隱式的再去調用超類中已定義的__init__,如下

class NewOne(Person):
    def __init__(self, name1,name2):
        self.name1 = name1
        self.name2 = name2
    def getName(self):
        return  self.name1 + self.name2 + ' NewOne'

if __name__ == '__main__':
    b = NewOne('hello_1','Hello_2')
    print(b.getName())

hello_1Hello_2 NewOne

‘__name__’的用法

__name__ 可以標識模塊的名字,可以顯示一個模塊的某功能是被自己執行還是被別的文件調用執行,假設模塊A、B,模塊A自己定義了功能C,模塊B調用模塊A,現在功能C被執行了:

如果C被A自己執行,也就是說模塊執行了自己定義的功能,那麼 __name__=='__main__'

如果C被B調用執行,也就是說當前模塊調用執行了別的模塊的功能,那麼__name__=='A'(被調用模塊的名字)

其實換一種說法也就是__name__ 表示當前程序運行在哪一個模塊中

class Student:

    def __int__(self):
        pass

    def differ(self):
        if __name__=='__main__':
            print('My own module:' + __name__)
        else:
            print('Called by :'+ __name__)

s=Student()
s.differ()

輸出是:
My own module:__main__


————————————————
版權聲明:本文爲CSDN博主「xmp1669217327」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xmp1669217327/article/details/81382174

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章