同時遇到字串與物件時,反射是最好的操作方式
1.__init__ 例項化執行
2.__str__ 物件執行列印操作時執行,只能返回字串型別的資料
3.__del__ 物件執行完自動刪除或者主動刪除湖執行
4.__getattr__ 物件查詢不存在的名字時執行
5.__setattr__ 物件在設定屬性(物件.變數名=變數值)時執行
6.__getattribute__ 物件查詢名字就會執行,不管該名字是否存在
7.__enter__ 物件執行with open 時執行,返回什麼as後面的變數名就會獲得什麼
8.__exit__ 物件執行with open 結束時執行
9.__call__ 物件被加括號呼叫時執行,該方法返回什麼,呼叫的結果就是什麼
type就是元類,元類就是建立類的類
class建立類底層也是由type建立的
產生類的三要素:類名,父類,類的命名空間
元類無法直接繼承,需要用關鍵字
class myclass(type):
pass
class mytypeclass(metaclass=myclass):
pass
1.__new__ # 底層產生一塊空間
2.__call__ # 賦予基本的框架
3.__init__ # 實際產生
定製類的產生,需要針對產生類的三要素做判斷
class mytypeclass(type): # 定義乙個類接受父類type
def __call__(self, *args, **kwargs): # 重寫__call__功能
args = [i.upper() for i in args] # 循將使用者輸入轉成大寫
return super().__call__(*args, **kwargs) # 重新呼叫原來的__call__方法
class myclass(metaclass=mytypeclass): # 定義乙個接受了type的父類的類
def __init__(self, name, gender): # 使用者輸入引數都經過了轉換
self.name = name
self.gender = gender
def __setattr__(self, key, value): # 增加資料功能
self.__dict__[key] = value.upper()
it行業中總共有23種設計模式
設計模式是由前輩積累的知識,針對問題做出的對應解決方法
目前我們只需要先了解一下設計模式之單列是什麼
單例模式的意思是乙個類只能產生乙個物件
經過測試,迴圈加計數器不行
now方法
class singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
orig = super(singleton, cls)
cls._instance = orig.__new__(cls)
return cls._instance
class myclass(singleton):
def __init__(self, name):
self.name = name
主要都是由檢測物件是否為空,如果不為空證明已經例項化。
功能不強,相容性較差,僅僅是不會orm的乙個過度使用模組
功能:將物件儲存到檔案 並且取出來之後還可以使用物件的功能
使用語法
# with open(r'%s'%obj.name,'wb') as f:
# pickle.dump(obj, f)
三層架構
1.展示層
選課系統專案的主要攻克點就在於展示層,不同的類需要不同的展示層,每個類的展示頁面都要獨立出來,來確定不同人員的使用
2.邏輯層
在選課系統中的邏輯層相較於atm購物車反而更簡單,因為其主要增刪改查功能我們早就在atm購物車中反覆練習過
3.資料層
資料層也不複雜,複雜的儲存資料功能我們已經反覆練習過,只需要針對不同的類去獲取類名,產生出相對於的資料資料夾即可
# 如何通過物件獲取類對應的字串名稱
物件 = 類()
# 固定方法
print(變數名.__class__) # 類名
print(變數名.__class__.__name__) # 類名 字串
選課系統(一)
今天進行了為期八個小時的測試,試圖完成乙個完整的選課系統,共計五個表的增刪改查,但是最終雖然 已經完成,但是在課程新增過程中,教師工號的傳參消失,導致整個專案的無法進行,已經實現的功能,分別以管理員 教師 學生的不同身份進行登入,並且進入不同的介面,實現了新增教師和學生,並在同時新增賬號,賬號密碼均...
公選課選課系統
menu 功能選單展示 userdaoimpl 登入註冊操作,提取檔案資料以及將資料存入檔案 courselistdaoimpl 將所有課程存入檔案以及從檔案中獲取所有課程資訊,對於課程的增刪以及對於課程資訊的修改 selectedcourselistdaoimpl 將所有已選擇課程存入檔案以及從檔...
統一認證系統(一)
每個系統都需要識別操作者的身份,並根據其不同的身份,分配一定的許可權,做一些操作上的限制。隨著系統的增多,若是單獨給每個系統都設計了一套使用者資料和許可權管理的機制,並提供了使用者登入證認,雖可以解決問題,但是將會帶來和使用者賬號管理不方便,使用者資料不統一等等問題。所以,將使用者資料整合起來,進行...