Python Class self __init__筆記
學到這個知識已經是第4,第5遍了,但還是跟盲人摸象一樣。
還是做點記錄,和測試
圖1:這裡的name和age,是指對例項初始化的時候,例項會帶有的屬性,a和b是等待客戶傳入的引數
圖2:按照這樣的設定,來進行的測試結果
如果,我們在__init__裡面設定了2個引數,但是建立例項化物件時候只給了一個,那麼,系統就會報錯的,如下面
圖3:僅設定了name的實參,沒給age的實參
當然,如果在__init__裡面給了預設引數了,也可以僅輸入一個,也是可以的
那name和age只是建立例項物件時候初始化時候該有的,如果後面像用到其他屬性呢?
答案是在方法中可以自行定義,如下圖
我這裡只是舉了個例子,身高是年齡的3倍關係,就位物件建立了一個tall屬性,後面可以隨時呼叫
然後,需要記住的是,self一定要寫,不然就等於是方法內的臨時變數了,不是物件的屬性了!!!
我們看下報錯的那張圖
然後我們來看一下,在初始化__init__的時候,如果沒有帶self的話,會有什麼樣的情況,如下:
下面例子,第7行裡面,這個name沒有self的字首,所以實際上,這裡的name只是一個__init__內部的臨時區域性變數,在後面根本不會用到,等於浪費了
我們看到my name is class global name這裡,正式因為初始化__init__裡面沒有self.name屬性,所以,他呼叫的是樓上的class變數
下面一行當你直接呼叫變數name的時候,因為class變數是針對類物件和例項物件的,所以,呼叫的name只能再往上一層,呼叫全域性變數
組後一行的Person.name裡的Person是類物件,所以呼叫的是class變數
相關文章
- Python 中__init__函式以及引數selfPython函式
- iOS[super class]和[self class]iOS
- Python 中的 super(類名, self).__init__() 的含義Python
- (基於Pytorch的深度學習)筆記1:建立模型用到的類:_init_和self、super(Model, self).__init__()PyTorch深度學習筆記模型
- object-c [self class] 和 [self _cmd]Object
- (學習筆記)python 對__init__的初步理解筆記Python
- Python機器學習筆記——One Class SVMPython機器學習筆記
- self::class和static::class的區別
- python 詳解類class的繼承、__init__初始化、super方法Python繼承
- python3 筆記18.構建類classPython筆記
- python的__init__()Python
- Razavi - RF Microelectronics的筆記 - LO Self Mixing筆記
- python二郎成長筆記(二)(封裝類class)Python筆記封裝
- Object C學習筆記18-SEL,@ selector,Class,@classObject筆記
- Python中__init__的理解Python
- Python__new__和__init__Python
- ES6學習筆記(七)【class】筆記
- ES6學習筆記(八)【class】筆記
- ES6學習筆記(九)【class】筆記
- TypeScript學習筆記之五類(Class)TypeScript筆記
- python中的“__init__”函式Python函式
- Python中__init__方法注意點Python
- Python self用法詳解Python
- Python中__init__的用法和理解Python
- JVM學習筆記——Class類檔案解讀JVM筆記
- Python中return self的用法Python
- python---之cls,和selfPython
- 深入理解python之selfPython
- Python筆記Python筆記
- python 筆記Python筆記
- Python __new__ 和 __init__ 的區別Python
- python過載父類的__init__方法Python
- Python繼承過程的__init__方法Python繼承
- python變數中self的新增Python變數
- python---之物件導向selfPython物件
- python openpyxl筆記Python筆記
- python筆記(3)Python筆記
- python筆記3Python筆記