歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python的類變量和對象變量聲明解析

Python的類變量和對象變量聲明解析

日期:2017/3/1 9:31:00   编辑:Linux編程

  Python的類和C++一樣,也都是存在兩種類型的變量,類變量和對象變量!前者由類擁有,被所有對象共享,後者由每個對象獨有。這裡我主要想討論一下他們的聲明辦法。

  首先說的是對象變量:

  只要是聲明在類的語句塊中,且沒有"self."前綴的變量都是類變量,且類變量是被所有對象共享的。

  注意紅字部分,如果聲明在類的方法的語句塊中,那麼就是局部變量了!比如下面這個例子:

 1 #!/usr/bin/env python
 2 # -* - coding: UTF-8 -* -
 3 #Function: Use the class var
 4 
 5 class Person:
 6     cvar = 1
 7     def sayHi(self):
 8       fvar = 1
 9 
10 print Person.cvar
11 print Person.fvar

  那個cvar就是屬於Python類的變量,而那個fvar就是方法sayHi()中的局部變量,第11條語句那裡就會報錯!

  接下來我們再來討論一下對象變量的聲明方法:

    在類的方法的語句塊中聲明的以“self.”開頭的變量都是對象變量,由對象獨有!

  比如下面這個例子:

 1 #!/usr/bin/env python
 2 # -* - coding: UTF-8 -* -
 3 #Function: Use the object var
 4 
 5 class Person:
 6     def haveName(self):
 7       self.name = 'Michael'
 8     def sayName(self):
 9       print self.name
10 
11 def main():
12     p = Person()
13 
14     p.haveName()
15     p.sayName()
16 
17 main()

  這裡在haveName()方法中聲明了一個對象變量,然後再在sayName()方法中調用。然後主程序中就會輸出了!

  不過建議將對象變量聲明在__init__()方法中,因為對象一被創建的時候即會調用這個方法,否則的話,比如上面那個例子,如果我先調用sayName()的話,那麼就會出錯,說對象實例還沒有name這個屬性!

  最後還想說的一點的就是,Python中沒有private public這些關鍵字來標明類的變量或者方法的訪問權限,但是可以通過在變量或者方法的前面加上"__"來表明這個成員是被類私有的,不能在外部調用,比如下面這個例子:

 1 #!/usr/bin/env python
 2 # -* - coding: UTF-8 -* -
 3 #Function: Use the private var and func
 4 
 5 class Person:
 6     __count = 0            #這個變量是私有數據成員,只能被類的方法訪問,是屬於類的
 7     def get(self):
 8       return Person.__count
 9     def __pri(self):
10       print 'Yes'
11 
12 p = Person()
13 print p.get()
14 
15 p.__pri()
16 print p.__count
  比如這裡的類變量__count就是類私有的,只能被類的函數成員調用(13行),而在類外面調用(16行)就是錯誤的!還有那個函數成員__pri()也是私有的,在類外面直接調用(15行),也是錯誤的!

--------------------------------------分割線 --------------------------------------

CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm

Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved