使用實例進行 獲取、設置、刪除 數據, 分別會觸發類的什麼私有方法html
class A(object): pass a = A() a["key"] = "val" a = a["key"] del a["key"]
python中經典類和新式類的區別python
以下示例, 請用面向對象的形式優化如下代碼linux
def exc1(host,port,db,charset,sql): conn=connect(host,port,db,charset) conn.execute(sql) return xxx def exc2(host,port,db,charset,proc_name) conn=connect(host,port,db,charset) conn.call_proc(sql) return xxx # 每次調用都須要重複傳入一堆參數 exc1('127.0.0.1',3306,'db1','utf8','select * from tb1;') exc2('127.0.0.1',3306,'db1','utf8','存儲過程的名字')
示例1, 現有以下代碼, 會輸出什麼:sql
class People(object): __name = "luffy" __age = 18 p1 = People() print(p1.__name, p1.__age)
示例2, 現有以下代碼, 會輸出什麼:編程
class People(object): def __init__(self): print("__init__") def __new__(cls, *args, **kwargs): print("__new__") return object.__new__(cls, *args, **kwargs) People()
請簡單解釋Python中 staticmethod(靜態方法)和 classmethod(類方法), 並分別補充代碼執行下列方法。json
class A(object): def foo(self, x): print("executing foo(%s, %s)" % (self,x)) @classmethod def class_foo(cls, x): print("executing class_foo(%s, %s)" % (cls,x)) @staticmethod def static_foo(x): print("executing static_foo(%s)" % (x)) a = A()
請執行如下代碼,解釋錯誤緣由,並修正錯誤。數據結構
class Dog(object): def __init__(self,name): self.name = name @property def eat(self): print(" %s is eating" %self.name) d = Dog("ChenRonghua") d.eat()
下面這段代碼的輸出結果將是什麼?請解釋。函數
class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Parent.x, Child1.x, Child2.x) Child1.x = 2 print(Parent.x, Child1.x, Child2.x) Parent.x = 3 print(Parent.x, Child1.x, Child2.x) # 1 1 1 繼承自父類的類屬性x,因此都同樣,指向同一塊內存地址 # 1 2 1 更改Child1,Child1的x指向了新的內存地址 # 3 2 3 更改Parent,Parent的x指向了新的內存地址
多重繼承的執行順序,請解答如下輸出結果是什麼?並解釋。fetch
class A(object): def __init__(self): print('A') super(A, self).__init__() class B(object): def __init__(self): print('B') super(B, self).__init__() class C(A): def __init__(self): print('C') super(C, self).__init__() class D(A): def __init__(self): print('D') super(D, self).__init__() class E(B, C): def __init__(self): print('E') super(E, self).__init__() class F(C, B, D): def __init__(self): print('F') super(F, self).__init__() class G(D, B): def __init__(self): print('G') super(G, self).__init__() if __name__ == '__main__': g = G() f = F() # G # D # A # B # # F # C # B # D # A
請編寫一段符合多態特性的代碼.優化
不少同窗都是學會了面向對象的語法,卻依然寫不出面向對象的程序,緣由是什麼呢?緣由就是由於你還沒掌握一門面向對象設計利器,即領域建模,請解釋下什麼是領域建模,以及如何經過其設計面向對象的程序?http://www.cnblogs.com/alex3714/articles/5188179.html 此blog最後面有詳解
請寫一個小遊戲,人狗大站,2個角色,人和狗,遊戲開始後,生成2我的,3條狗,互相混戰,人被狗咬了會掉血,狗被人打了也掉血,狗和人的攻擊力,具有的功能都不同。注意,請按題14領域建模的方式來設計類。
編寫程序, 在元類中控制把自定義類的數據屬性都變成大寫.
編寫程序, 在元類中控制自定義的類無需init方法.
編寫程序, 以下有三點要求:
e.g { "egon":{"password":"123",'status':False,'timeout':0}, "alex":{"password":"456",'status':False,'timeout':0}, }
用面向對象的形式編寫一個老師角色, 並實現如下功能, 獲取老師列表, 建立老師、刪除老師、建立成功以後經過 pickle 序列化保存到文件裏,並在下一次重啓程序時能
讀取到建立的老師, 例如程序目錄結構以下.
. |-- bin/ | |-- main.py 程序運行主體程序(可進行菜單選擇等) |-- config/ | |-- settings.py 程序配置(例如: 配置存儲建立老師的路徑相關等) |-- db 數據存儲(持久化, 使得每次再重啓程序時, 相關數據對應保留) | |-- teachers/ 存儲全部老師的文件 | |-- ... ... |-- src/ 程序主體模塊存放 | |-- __init__.py | |-- teacher.py 例如: 實現老師相關功能的文件 | |-- group.py 例如: 實現班級相關的功能的文件 |-- manage.py 程序啓動文件 |-- README.md 程序說明文件
根據23 題, 再編寫一個班級類, 實現如下功能, 建立班級, 刪除班級, 獲取班級列表、建立成功以後經過 pickle 序列化保存到文件裏,並在下一次重啓程序時能
讀取到建立的班級.
根據 23題, 編寫課程類, 實現如下功能, 建立課程(建立要求如上), 刪除課程, 獲取課程列表
根據23 題, 編寫學校類, 實現如下功能, 建立學校, 刪除學校, 獲取學校列表
經過23題, 它們雷同的功能, 是否能夠經過繼承的方式進行一些優化
僞代碼 class Behavior(object): def fetch(self, keyword): 經過 keyword 參數 查詢出對應的數據列表 class School(Behavior): pass class Teacher(Behavior): pass s = School() t = Teacher() s.fetch("school") t.fetch("teacher")
題目:選課系統開發,要求有四種角色:學校、學員、課程、講師
詳細要求:
建立北京、上海 2 所學校
建立linux , python , go 3個課程 , linux\py 在北京開, go 在上海開
課程包含,週期,價格,經過學校建立課程
經過學校建立班級, 班級關聯課程、講師
建立學員時,選擇學校,關聯班級
建立講師角色時要關聯學校
提供兩個角色接口
爲學員、講師、管理員分別提供用戶界面,並提供對應功能: 1 學員視圖, 能夠註冊, 交學費, 選擇班級, 2 講師視圖, 講師可管理本身的班級, 上課時選擇班級, 查看班級學員列表 , 修改所管理的學員的成績 3 管理視圖,建立講師, 建立班級,建立課程
注1:上面的操做產生的數據都經過pickle序列化保存到文件裏 注2:此做業必須畫流程圖,圖中標註好不一樣類或對象之間的調用關係