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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

opp小节

發(fā)布時(shí)間:2024/9/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opp小节 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本章總結(jié)

練習(xí)題

  • 面向?qū)ο笕筇匦?#xff0c;各有什么用處,說(shuō)說(shuō)你的理解。
  • 類(lèi)的屬性和對(duì)象的屬性有什么區(qū)別?
  • 面向過(guò)程編程與面向?qū)ο缶幊痰膮^(qū)別與應(yīng)用場(chǎng)景?
  • 類(lèi)和對(duì)象在內(nèi)存中是如何保存的。
  • 什么是綁定到對(duì)象的方法、綁定到類(lèi)的方法、解除綁定的函數(shù)、如何定義,如何調(diào)用,給誰(shuí)用?有什么特性
  • 使用實(shí)例進(jìn)行 獲取、設(shè)置、刪除 數(shù)據(jù), 分別會(huì)觸發(fā)類(lèi)的什么私有方法

    class A(object): pass a = A() a["key"] = "val" a = a["key"] del a["key"]
  • python中經(jīng)典類(lèi)和新式類(lèi)的區(qū)別

  • 如下示例, 請(qǐng)用面向?qū)ο蟮男问絻?yōu)化以下代碼

    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 # 每次調(diào)用都需要重復(fù)傳入一堆參數(shù) exc1('127.0.0.1',3306,'db1','utf8','select * from tb1;') exc2('127.0.0.1',3306,'db1','utf8','存儲(chǔ)過(guò)程的名字')
  • 示例1, 現(xiàn)有如下代碼, 會(huì)輸出什么:

    class People(object): __name = "luffy" __age = 18 p1 = People() print(p1.__name, p1.__age)
  • 示例2, 現(xiàn)有如下代碼, 會(huì)輸出什么:

    class People(object): def __init__(self): print("__init__") def __new__(cls, *args, **kwargs): print("__new__") return object.__new__(cls, *args, **kwargs) People()
  • 請(qǐng)簡(jiǎn)單解釋Python中 staticmethod(靜態(tài)方法)和 classmethod(類(lèi)方法), 并分別補(bǔ)充代碼執(zhí)行下列方法。

    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()
  • 請(qǐng)執(zhí)行以下代碼,解釋錯(cuò)誤原因,并修正錯(cuò)誤。

    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()
  • 下面這段代碼的輸出結(jié)果將是什么?請(qǐng)解釋。

    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 繼承自父類(lèi)的類(lèi)屬性x,所以都一樣,指向同一塊內(nèi)存地址 # 1 2 1 更改Child1,Child1的x指向了新的內(nèi)存地址 # 3 2 3 更改Parent,Parent的x指向了新的內(nèi)存地址
  • 多重繼承的執(zhí)行順序,請(qǐng)解答以下輸出結(jié)果是什么?并解釋。

    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
  • 請(qǐng)編寫(xiě)一段符合多態(tài)特性的代碼.

  • 很多同學(xué)都是學(xué)會(huì)了面向?qū)ο蟮恼Z(yǔ)法,卻依然寫(xiě)不出面向?qū)ο蟮某绦?#xff0c;原因是什么呢?原因就是因?yàn)槟氵€沒(méi)掌握一門(mén)面向?qū)ο笤O(shè)計(jì)利器,即領(lǐng)域建模,請(qǐng)解釋下什么是領(lǐng)域建模,以及如何通過(guò)其設(shè)計(jì)面向?qū)ο蟮某绦?#xff1f;http://www.cnblogs.com/alex3714/articles/5188179.html?此blog最后面有詳解

  • 請(qǐng)寫(xiě)一個(gè)小游戲,人狗大站,2個(gè)角色,人和狗,游戲開(kāi)始后,生成2個(gè)人,3條狗,互相混戰(zhàn),人被狗咬了會(huì)掉血,狗被人打了也掉血,狗和人的攻擊力,具備的功能都不一樣。注意,請(qǐng)按題14領(lǐng)域建模的方式來(lái)設(shè)計(jì)類(lèi)。

  • 編寫(xiě)程序, 在元類(lèi)中控制把自定義類(lèi)的數(shù)據(jù)屬性都變成大寫(xiě).

  • 編寫(xiě)程序, 在元類(lèi)中控制自定義的類(lèi)無(wú)需init方法.

  • 編寫(xiě)程序, 編寫(xiě)一個(gè)學(xué)生類(lèi), 要求有一個(gè)計(jì)數(shù)器的屬性, 統(tǒng)計(jì)總共實(shí)例化了多少個(gè)學(xué)生.
  • 編寫(xiě)程序, A 繼承了 B, 倆個(gè)類(lèi)都實(shí)現(xiàn)了 handle 方法, 在 A 中的 handle 方法中調(diào)用 B 的 handle 方法
  • 編寫(xiě)程序, 如下有三點(diǎn)要求:

  • 自定義用戶(hù)信息數(shù)據(jù)結(jié)構(gòu), 寫(xiě)入文件, 然后讀取出內(nèi)容, 利用json模塊進(jìn)行數(shù)據(jù)的序列化和反序列化
  • e.g {"egon":{"password":"123",'status':False,'timeout':0}, "alex":{"password":"456",'status':False,'timeout':0}, }
  • 定義用戶(hù)類(lèi),定義方法db,例如 執(zhí)行obj.db可以拿到用戶(hù)數(shù)據(jù)結(jié)構(gòu)
  • 在該類(lèi)中實(shí)現(xiàn)登錄、退出方法, 登錄成功將狀態(tài)(status)修改為T(mén)rue, 退出將狀態(tài)修改為False(退出要判斷是否處于登錄狀態(tài)).密碼輸入錯(cuò)誤三次將設(shè)置鎖定時(shí)間(下次登錄如果和當(dāng)前時(shí)間比較大于10秒即不允許登錄)
  • 用面向?qū)ο蟮男问骄帉?xiě)一個(gè)老師角色, 并實(shí)現(xiàn)以下功能, 獲取老師列表, 創(chuàng)建老師、刪除老師、創(chuàng)建成功之后通過(guò) pickle 序列化保存到文件里,并在下一次重啟程序時(shí)能
    讀取到創(chuàng)建的老師, 例如程序目錄結(jié)構(gòu)如下.

    . |-- bin/ | |-- main.py 程序運(yùn)行主體程序(可進(jìn)行菜單選擇等) |-- config/ | |-- settings.py 程序配置(例如: 配置存儲(chǔ)創(chuàng)建老師的路徑相關(guān)等) |-- db 數(shù)據(jù)存儲(chǔ)(持久化, 使得每次再重啟程序時(shí), 相關(guān)數(shù)據(jù)對(duì)應(yīng)保留) | |-- teachers/ 存儲(chǔ)所有老師的文件 | |-- ... ... |-- src/ 程序主體模塊存放 | |-- __init__.py | |-- teacher.py 例如: 實(shí)現(xiàn)老師相關(guān)功能的文件 | |-- group.py 例如: 實(shí)現(xiàn)班級(jí)相關(guān)的功能的文件 |-- manage.py 程序啟動(dòng)文件 |-- README.md 程序說(shuō)明文件
  • 根據(jù)23 題, 再編寫(xiě)一個(gè)班級(jí)類(lèi), 實(shí)現(xiàn)以下功能, 創(chuàng)建班級(jí), 刪除班級(jí), 獲取班級(jí)列表、創(chuàng)建成功之后通過(guò) pickle 序列化保存到文件里,并在下一次重啟程序時(shí)能
    讀取到創(chuàng)建的班級(jí).

  • 根據(jù) 23題, 編寫(xiě)課程類(lèi), 實(shí)現(xiàn)以下功能, 創(chuàng)建課程(創(chuàng)建要求如上), 刪除課程, 獲取課程列表

  • 根據(jù)23 題, 編寫(xiě)學(xué)校類(lèi), 實(shí)現(xiàn)以下功能, 創(chuàng)建學(xué)校, 刪除學(xué)校, 獲取學(xué)校列表

  • 通過(guò)23題, 它們雷同的功能, 是否可以通過(guò)繼承的方式進(jìn)行一些優(yōu)化

    偽代碼class Behavior(object): def fetch(self, keyword): 通過(guò) keyword 參數(shù) 查詢(xún)出對(duì)應(yīng)的數(shù)據(jù)列表 class School(Behavior): pass class Teacher(Behavior): pass s = School() t = Teacher() s.fetch("school") t.fetch("teacher")
  • 總結(jié)

    以上是生活随笔為你收集整理的opp小节的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。