日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3-3 面向对象 本章总结

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3-3 面向对象 本章总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章總結

練習題

  • 面向對象三大特性,各有什么用處,說說你的理解。
  • 類的屬性和對象的屬性有什么區別?
  • 面向過程編程與面向對象編程的區別與應用場景?
  • 類和對象在內存中是如何保存的。
  • 什么是綁定到對象的方法、綁定到類的方法、解除綁定的函數、如何定義,如何調用,給誰用?有什么特性
  • 使用實例進行 獲取、設置、刪除 數據, 分別會觸發類的什么私有方法

    class A(object): pass a = A() a["key"] = "val" a = a["key"] del a["key"]
  • python中經典類和新式類的區別

  • 如下示例, 請用面向對象的形式優化以下代碼

    1、在沒有學習類這個概念時,數據與功能是分離的def exc1(host,port,db,charset):conn=connect(host,port,db,charset)conn.execute(sql)return xxxdef 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, 現有如下代碼, 會輸出什么:

    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(類方法), 并分別補充代碼執行下列方法。

    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指向了新的內存地址
  • 多重繼承的執行順序,請解答以下輸出結果是什么?并解釋。

    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方法.

  • 編寫程序, 編寫一個學生類, 要求有一個計數器的屬性, 統計總共實例化了多少個學生.
  • 編寫程序, A 繼承了 B, 倆個類都實現了 handle 方法, 在 A 中的 handle 方法中調用 B 的 handle 方法
  • 編寫程序, 如下有三點要求:

  • 自定義用戶信息數據結構, 寫入文件, 然后讀取出內容, 利用json模塊進行數據的序列化和反序列化
  • e.g {"egon":{"password":"123",'status':False,'timeout':0}, "alex":{"password":"456",'status':False,'timeout':0}, }
  • 定義用戶類,定義方法db,例如 執行obj.db可以拿到用戶數據結構
  • 在該類中實現登錄、退出方法, 登錄成功將狀態(status)修改為True, 退出將狀態修改為False(退出要判斷是否處于登錄狀態).密碼輸入錯誤三次將設置鎖定時間(下次登錄如果和當前時間比較大于10秒即不允許登錄)
  • 用面向對象的形式編寫一個老師角色, 并實現以下功能, 獲取老師列表, 創建老師、刪除老師、創建成功之后通過 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")
  • 轉載于:https://www.cnblogs.com/venicid/p/8652257.html

    總結

    以上是生活随笔為你收集整理的3-3 面向对象 本章总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。