Python變數的本質:被賦值。
1 普通python變數(非類別相關變數)很容易理解,在被賦值後即變數存在,可讀可寫。
2 Python類別的變數(類別變數和實例物件變數)以某種方式在某個地方被賦值,即存在,可被讀寫。
2.1 Python類別變數被賦值
(1)類別的設計裡
class裡def外,透過變數名能被命名賦值。
def裡透過類別物件即類別名字的點運算變數名稱可被賦值。
(2)程式裡
透過類別物件(類別名稱)的點運算類別名字也可被賦值。
相關推薦:《Python影片教學》
2.2 Python實例物件變數被賦值
(1)類別的設計時
def裡透過self點運算變數名能被賦值,不一定非在init裡,其他已被呼叫的方法函數裡也行。
(2)程式裡
透過實例物件的點運算變數名稱可被賦值。
常規,類別裡的變數透過類別設計來完成(2.1(1)和2.2(1)),增加類別裡變數一般不採用(2.1(2)和2.2(2))這種方式,完成(2.1(2)和2.2(2))可透過類別的繼承去實現。
class aa: w = 10 def __init__(self): self.x = 11 self.y = 12 def add(self): return self.x + self.y a = aa() print a.add() #下边两条指令各起何作用?结果是输出两个 20 么?还是两个13?还是? aa.w = 20 a.w = 13 print aa.w, a.w #程序继续增加如下,怎样理解这t和q呢?他们是___变量 a.t = 14 a.q = 15 print a.t, a.q #程序继续增加如下,怎样理解这m和n呢?他们是___变量 aa.m = 30 aa.n = 40 print aa.m, aa.n #好了再来个提升吧 #程序继续增加,下列三个print语句都能正确执行么?为何? b = aa() print b.x,b.y print b.t,b.q print b.m,b.n
要解決以上問題,首先得清晰何時類別才有了類別變量,實例有了實例變數?
其次要深入理解類別變數的作用,實例變數存在的範圍和誰相關!
以上是python類別變數和實例變數的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!