類中的函數叫方法
類中的變量叫屬性
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.類方法可以修改,但實例方法不允許修改