首頁 >後端開發 >Python教學 >python類別變數和實例變數的區別

python類別變數和實例變數的區別

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-06-24 10:56:093243瀏覽

Python變數的本質:被賦值。

1 普通python變數(非類別相關變數)很容易理解,在被賦值後即變數存在,可讀可寫。

2 Python類別的變數(類別變數和實例物件變數)以某種方式在某個地方被賦值,即存在,可被讀寫。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn