面向对象-抽象类
什么是抽象類?
不完整的一種類。
具有抽象方法的類就是抽象類。
什么是抽象方法?
不完整的方法
沒有方法體的方法就是抽象方法。
什么是元類?
元類就是用來制作類的類。
正常情況下所有類的元類默認都是type
如何查看一個類的元類
類.__class__
type(類)
查詢數據類型
type(對象)
對象.__class__
注意:正常情況下type是系統默認的元類
抽象類的特征:
1.抽象類不能實例化使用
2.抽象類中可以存在抽象方法,也可以存在正常的方法
3.抽象類中是否可以添加成員屬性
4.抽象類的使用方式就是被其他類繼承。
5.其他類繼承了抽象類并且實現了抽象類的所有抽象方法之后就可以實例化該類!
抽象類的實際作用:
1.指定開發程序規范
2.協同程序開發,加速開發效率
?
抽象類1
1 ''' 2 關于元類: 3 ''' 4 ''' 5 #定義一個普通的類? 6 class Car: 7 pass 8 9 #查看類的元類1 10 print(type(Car)) 11 #查看類的元類2 12 print(Car.__class__) 13 ''' 14 15 #聲明抽象類 16 #導入抽象類的功能模塊 17 import abc 18 class User(metaclass = abc.ABCMeta):#注意制作抽象類必須另外指定元類 19 #屬性 20 id = 999 21 22 #定義方法 23 24 #添加用戶的方法 對象方法 -> 抽象的對象方法 25 @abc.abstractmethod 26 def user_add(self): 27 pass 28 29 #修改用戶的方法 類方法 -> 抽象的類方法 30 @abc.abstractclassmethod 31 def user_update(cls): 32 pass 33 34 #刪除用戶的方法 綁定類的方法 - > 抽象的綁定類的方法 35 @abc.abstractmethod 36 def user_del(): 37 pass 38 39 #查找用戶的方法 靜態方法 -> 抽象的靜態方法 40 @abc.abstractstaticmethod 41 def user_find(): 42 pass 43 44 #抽象類中可以有正常的方法 45 def user_lock(self): 46 print('封禁用戶的方法') 47 48 #嘗試實例化抽象類User 49 #u = User() 50 51 #聲明一個類繼承User類來使用 52 class MyUser(User): 53 #實現所有抽象類中的方法 54 # 添加用戶的方法 對象方法 55 def user_add(self): 56 print('這是一個添加用戶的方法') 57 58 # 修改用戶的方法 類方法 59 @classmethod 60 def user_update(cls): 61 print('這是一個設置用戶的方法') 62 63 # 刪除用戶的方法 綁定類的方法 64 def user_del(): 65 print('這是一個刪除用戶的方法') 66 67 # 查找用戶的方法 靜態方法 68 @staticmethod 69 def user_find(): 70 print('這是一個查找用戶的方法') 71 72 #實例化MyUser類 73 mu = MyUser() 74 #print(mu) 75 #輸出結果:<__main__.MyUser object at 0x000002DBE8A100F0> 76 77 #調用方法 78 #調用user_lock方法 79 #mu.user_lock() 80 #輸出結果:封禁用戶的方法 81 82 #調用user_add方法 83 #mu.user_add() 84 #輸出結果:這是一個添加用戶的方法 85 86 #調用user_update方法 87 #MyUser.user_update() 88 #輸出結果:這是一個設置用戶的方法 89 90 #調用user_del的方法 91 #MyUser.user_del() 92 #輸出結果:這是一個刪除用戶的方法 93 94 #調用user_find方法 95 #mu.user_find() 96 #輸出結果:這是一個查找用戶的方法?
抽象類2 【指定了開發的規則】
1 #聲明抽象類 【指定了開發的規則】 2 #導入抽象類的功能模塊 3 import abc 4 class User(metaclass = abc.ABCMeta):#注意制作抽象類必須另外指定元類 5 #屬性 6 id = 999 7 8 #定義方法 9 10 #添加用戶的方法 對象方法 -> 抽象的對象方法 【小趙】 11 @abc.abstractmethod 12 def user_add(self): 13 pass 14 15 #修改用戶的方法 類方法 -> 抽象的類方法 【小錢】 16 @abc.abstractclassmethod 17 def user_update(cls): 18 pass 19 20 #刪除用戶的方法 綁定類的方法 - > 抽象的綁定類的方法 【小孫】 21 @abc.abstractmethod 22 def user_del(): 23 pass 24 25 #查找用戶的方法 靜態方法 -> 抽象的靜態方法 【小李】 26 @abc.abstractstaticmethod 27 def user_find(): 28 pass 29 30 #抽象類中可以有正常的方法 【自己】 31 def user_lock(self): 32 print('封禁用戶的方法') 33 34 35 #小趙的工作 [但是可以在一個單獨的文件中開發] 36 class XZUser(User): 37 # 添加用戶的方法 對象方法 【小趙】 38 def user_add(self): 39 print('添加用戶的方法-小趙完成的') 40 41 42 #小錢的工作[但是可以在一個單獨的文件中開發] 43 class XQUser(XZUser): 44 # 修改用戶的方法 類方法 【小錢】 45 @classmethod 46 def user_update(cls): 47 print('設置用戶的方法-小錢完成的') 48 49 #小孫的工作[但是可以在一個單獨的文件中開發] 50 class XSUser(XQUser): 51 # 刪除用戶的方法 綁定類的方法【小孫】 52 def user_del(): 53 print('刪除用戶的方法-小孫完成的') 54 55 #小李的工作[但是可以在一個單獨的文件中開發] 56 class XLUser(XSUser): 57 # 查找用戶的方法 靜態方法 -> 抽象的靜態方法 【小李】 58 @staticmethod 59 def user_find(): 60 print('查找用戶的方法-小李完成的') 61 62 #這里可以使用小李的類 63 u = XLUser() 64 65 #調用方法 66 #u.user_lock() 67 #輸出結果:封禁用戶的方法 68 69 #u.user_add() 70 #輸出結果:添加用戶的方法-小趙完成的 71 72 #XLUser.user_update() 73 #輸出結果:設置用戶的方法-小錢完成的 74 75 #XLUser.user_del() 76 #輸出結果:刪除用戶的方法-小孫完成的 77 78 #u.user_find() 79 #輸出結果:查找用戶的方法-小李完成的?
轉載于:https://www.cnblogs.com/lws865/p/10875408.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 学习threeJS(一)--第一个thr
- 下一篇: Java并行任务框架Fork/Join