Python 類中的方法和屬性


類中的函數叫方法

類中的變量叫屬性

 

1.類增加/修改屬性
  從外部添加/修改屬性
1 class A():
2     pass
3 A.num = 100
4 print(A.num)
5 #>>100

  從內部添加/修改屬性

1 class A():
2     @classmethod
3     def add_num(cls):
4         cls.num = input('請輸入')
5         print(cls.num)
6 
7 A.add_num()

 2.方法不但能調用類屬性,還能直接調用類中的其他方法。

  下面例子的16行就是調用了類中的其他方法

 1 class 成績單():
 2     @classmethod
 3     def 錄入成績單(cls):
 4         cls.學生姓名 = input('請輸入學生姓名:')
 5         cls.成績 = int(input('請輸入考試成績:'))
 6 
 7     @classmethod
 8     def 計算是否及格(cls):
 9         if cls.成績 >= 60:
10             return '及格'
11         else:
12             return '不及格'
13 
14     @classmethod
15     def 考試結果(cls):
16         print(cls.計算是否及格())
17 
18 
19 成績單.錄入成績單()
20 成績單.考試結果()

 

 3.類的實例化

  通過類的實例化,可以創建多個實例對象。通過下面一個例子解釋一下類的實例化

1 class my_class():
2     num = 100
3     def print_num(self):
4         print('num is %d'%(self.num))
5 
6 class_1 =  my_class()# 實例化
7 class_2 =  my_class()# 實例化

4.實例屬性/類屬性的修改/新增

   這個例子中可能會對第15行有疑問,類屬性已經修改成了50,然而輸出的不是50。可以詳見這位博友的講解https://www.cnblogs.com/fengf233/p/10991028.html

 1 class my_class():
 2     num = 100
 3     def print_num(self):
 4         print('num is %d'%(self.num))
 5 
 6 class_1 =  my_class()# 實例化
 7 class_2 =  my_class()# 實例化
 8 class_1.print_num() 
 9 #>>num is 100
10 class_2.print_num()
11 #>>num is 100
12 class_1.num = 10 #修改實例屬性
13 my_class.num = 50 #修改類屬性
14 
15 class_1.print_num()
16 #>>num is 10
17 class_2.print_num()
18 #>>num is 50
19 
20 class_1.num2 = 5 #新增類屬性
21 print(class_1.num2)
22 #>>5

5.類方法的修改

  以下代碼是類方法的修改。要注意一下,第8行重寫類方法時,不能在函數的后面加括號,這里是做函數的替換,不需要加括號。如果加上括號,就變成了函數的調用,明顯是不對滴。

  實例方法是不允許修改,修改會報錯。

class my_class():
    def print_something(self):
        print('old print')

def new_print(self):
    print('new print')

my_class.print_something = new_print #重寫類方法
class_1 =  my_class()# 實例化
class_1.print_something()
#>>new print

7.做一個總結
  A.修改類方法和屬性,會影響實例方法和屬性

  B.一個實例屬性的修改,不會影響另一個實例屬性

  C.類方法可以修改,但實例方法不允許修改  

 

 

引用:https://www.cnblogs.com/fengf233/


免責聲明!

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



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