Python中的類(2)


一、使用類和實例

我們先編寫一個學生的類,它存儲了有關學生的信息,還有一個整合學生信息的方法:

student.py

class Student():
    
    def __init__(self,name,age):
        """初始化學生信息"""
        self.name = name
        self.age = age
        
    def get_desc(self):
        """得到學生的描述信息"""
        long_name = str(self.age) + ' ' + self.name
        return long_name

stu1 = Student('joker',18)
print(stu1.get_desc())

console:

解釋:__init__() 用於初始化實例的屬性,在get_desc() 中,使用了self.name 和 self.age 用戶訪問此實例中的屬性,用來打印學生的基本信息。

二、給屬性賦默認值以及修改屬性的值

類中的每個屬性都必須有初始值,就算它是0或者空字符串,那也必須要有。一般情況下我們使用__init__() 用於初始化,但如果有屬性

在__init__() 中已被賦與初始值,則在實例化對象時,無需包含為它提供初始值的形參。

student.py

 1 class Student():
 2     
 3     def __init__(self,name):
 4         """初始化學生信息"""
 5         self.name = name
 6         self.age = 0
 7         
 8     def get_desc(self):
 9         """得到學生的描述信息"""
10         long_name = str(self.age) + ' ' + self.name
11         return long_name
12 
13 stu1 = Student('joker')
14 print(stu1.get_desc())
15 stu1.age = 18
16 print(stu1.get_desc())

console:

 

解釋:

  現在,在Python調用__init__() 來創建新實例時,只需要傳入姓名即可實例化對象,因為第六行代碼,給age 賦予了初始值,且init方法中也只需要除self外一個name形參,所以第一次打印的年齡為0,再看第15行代碼,我們用這種方式給age重新賦值18,所以第二次打印的年齡是18,所以,如果我們需要修改對象中的屬性可以使用這種方式,但卻不是最好的方式。

  接下來使用第二種方式:用方法給屬性賦值:

student.py

 1 class Student():
 2     
 3     def __init__(self,name):
 4         """初始化學生信息"""
 5         self.name = name
 6         self.age = 0
 7         
 8     def get_desc(self):
 9         """得到學生的描述信息"""
10         long_name = str(self.age) + ' ' + self.name
11         return long_name
12         
13     def update_age(self,new_age):
14         """用於更新學生的年齡"""
15         self.age = new_age
16 
17 stu1 = Student('joker')
18 print(stu1.get_desc())
19 stu1.update_age(19)
20 print(stu1.get_desc())

console:

解釋:

  我們在類中,新增了一個用於更新學生年齡的方法,需要傳入一個新的年齡,方法將把這個新的年齡,重新賦值給age來完成age的更新。在第19行代碼中我們傳入19,然后打印出的信息確實顯示了我們所傳入的年齡,即用方法更新屬性的值是可行的。其實,這種方式是我們常用的,一般情況下,我們不會直接訪問類中的屬性,所以需要用方法來做“中間人”,因為這樣,我們可以在方法中做一些額外的操作,比如在重新賦值前先判斷年齡是否非法(負數),如果非法就不改變原先屬性值或將原先的值設置為默認值。

 

 

  友誼是如此的甜美穩固忠誠,又至死不渝的神聖情感,只要他們不跟你借錢

 


免責聲明!

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



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