python“靜態”變量、實例變量與本地變量的聲明示例
前言
雖然各種編程語言之間大部分語法存在共通的地方,但是在一些細節的處理上還是千差萬別
才接觸Python不久(之前是學Java的),實在想吐槽一下語言之間編碼格式上的不統一問題,比如Java用分號分隔代碼塊,Python用空格,這無形之中增加了編碼人員的學習成本
作為初學人員,還是老老實實記錄一下學習過程中的坑:)
1. “靜態”變量的聲明
這里的靜態變量是借用Java中靜態變量的概念(不知道Python中的具體概念是什么),指既可以通過類名直接進行訪問,也可以通過類的實例進行訪問的變量。這種變量的聲明很簡單,直接在類代碼塊中設置變量即可,不需要任何關鍵字
Java中這樣聲明的變量是實例變量,只能通過對象實例進行訪問
class Test: # 這是一個“靜態”變量 className = 'Test'
2. 實例變量的聲明
實例變量是指必須通過類的實例去訪問的變量
實例變量的聲明比較神奇,在任意的方法中,在變量名稱前面加上“self.”,該變量就變成了實例變量。這樣這個變量在其他的方法中也同樣可以使用了(個人感覺有點奇葩啊有木有)
所以實例變量的聲明有一點特別重要,如果該實例變量會做跨方法的使用,那么實例變量聲明的方法一定要在實例變量使用的方法調用之前執行
def __init__(self): # 這是一個實例變量 self.hello = Hello()
3. 本地變量的聲明
本地變量是僅在類的方法中使用的變量
聲明方法也很簡單,直接在類的方法中定義變量即可
def who(self): # 這是一個本地變量 name = 'Cain' return name
最后是一個完整的使用示例:
一個hello類:
class Hello: def who(self): # 這是一個本地變量 name = 'Cain' return name
一個Test類(其中會用到hello類):
# -*- coding:UTF-8 -*-from hello import Hello class Test: # 這是一個“靜態”變量 className = 'Test' def __init__(self): # 這是一個實例變量 self.hello = Hello() def sayName(self): # 類的方法中訪問實例變量 print('My name is ' + self.hello.who()) if __name__ == '__main__': test = Test() test.sayName() test1 = Test() # 通過類名直接訪問靜態變量 print(Test.className) # 通過實例名訪問靜態變量 print(test.className) # 通過實例名訪問實例變量 print(test.hello.who()) # 通過類名直接訪問實例變量會報錯!!! # print(Test.hello.who())
總結
到此這篇關于python“靜態”變量、實例變量與本地變量聲明的文章就介紹到這了,更多相關python靜態變量、實例變量與本地變量聲明內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
