類和類屬性的定義、訪問


一、類的定義:
  在一個類中,除了可以包含前面所說的屬性,還可以包含各種方法。
  屬性對應一個類可以用來保存哪些數據,而方法對應一個類可以支持哪些操作(即數據處理)。
小提示:
  類中的屬性對應前面所學習的變量,而類中的方法對應前面所學習的函數。通過類,可以把數據和操作封裝在一起,從而使得程序結構更加清晰,這也就是所謂的類的封裝性。
 
類的定義形式:
   class 類名:
  語句1
  語句2
  ... ...
  語句N
提示:類體的各語句需要采用縮進方式以表示它們是類中的語句。
 
例:創建Student類對象
class Student: #定義一個名字為Student的類
    pass #一個空語句,起到占位作用,表示Student類中沒有任何屬性和方法
if __name__=='__main__':
    stu=Student() #創建Student類的對象,並將創建的對象賦給變量stu
    print(stu) #輸出stu

輸出:<__main__.Student object at 0x000002300639F4E0>

提示:每次創建對象時,系統都會在內存中選擇一塊區域分配給對象,每次選擇的內存通常是不一樣的。因此,實際運行時會看到一個不同的stu對象地址。
 
二、類屬性的定義
  
我們可以直接在定義類時指定該類的屬性,即類屬性。例如:
  class Student: #定義Student類
  name='Unknown' #定義Student類中有一個name屬性
對類屬性的訪問,既可以直接通過類名訪問,也可以通過該類的對象訪問,訪問方式為:
類名或對象名.屬性名
 
例:類屬性的訪問示例
 1 class Student: #定義Student類 
 2     name='Unknown' #定義Student類中有一個name屬性 
 3 if __name__=='__main__': 
 4     print('第4行輸出:',Student.name) 
 5     stu1=Student() #創建Student類對象stu1 
 6     stu2=Student() #創建Student類對象stu2 
 7     print('第7行輸出:stu1 %s,stu2 %s'%(stu1.name,stu2.name))
 8     Student.name='未知' #將Student的類屬性name賦為“未知” 
 9     print('第9行輸出:',Student.name) 
10     print('第10行輸出:stu1 %s,stu2 %s'%(stu1.name,stu2.name))
11     stu1.name='李曉明' #將stu1的name屬性賦值為“李曉明” 
12     stu2.name='馬紅' #將stu2的name屬性賦值為“馬紅” 
13     print('第13行輸出:',Student.name) 
14     print('第14行輸出:stu1 %s,stu2 %s'%(stu1.name,stu2.name))
15     Student.name='學生' #將Student的類屬性name賦為“學生” 
16     print('第16行輸出:',Student.name) 
17     print('第17行輸出:stu1 %s,stu2 %s'%(stu1.name,stu2.name))
第4行輸出: Unknown
第7行輸出:stu1 Unknown,stu2 Unknown
第9行輸出: 未知
第10行輸出:stu1 未知,stu2 未知
 
第13行輸出:未知
第14行輸出:stu1 李曉明,stu2 馬紅
 
第16行輸出:學生
第17行輸出:stu1 李曉明,stu2 馬紅
 
三、為對象動態綁定新屬性
  Python作為一種動態語言,除了可以在定義類時指定類屬性外,
  還可以動態地為已經創建的對象綁定新的屬性。
例:為對象動態綁定新屬性示例。
1 class Student: #定義Student類 
2     name='Unknown' #定義Student類中有一個name屬性 
3 if __name__=='__main__': 
4     stu1=Student() #定義Student類對象stu1 
5     stu2=Student() #定義Student類對象stu2 
6     stu1.age=19 #為對象stu1動態綁定新的屬性age 
7     print('stu1姓名:%s,年齡:%d'%(stu1.name,stu1.age)) #輸出姓名和年齡 
8     #print('stu2年齡:'%stu2.age) #取消注釋則該語句會報錯 
9     #print('使用類名訪問年齡屬性:'%Student.age) #取消注釋則該語句會報錯

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM