這幾天和幾個朋友以各種途徑討論過OOP的相關問題,他們是:令狐蟲、Frank、晉劍、小馮大家對OOP有不同看法,所謂工程派和學院派看法不一致。從應用的角度看,工程派的觀點是值得推薦的,那就是:不用太在意內部是怎么工作的,只要能夠解決眼下的問題即可。但是,對于學習者而言,如果僅僅停留在工程派的層面(特別提醒,上述幾位朋友都是工程派的大俠,他們可不是簡單地能夠使用,其實是更高層次的“無招勝有招”),學習者可能感覺有點不透徹。所以,學習者,特別是初學者,要知道一
系統 2019-09-27 17:55:20 1788
__str__的用法在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法當使用print輸出對象的時候,只要自己定義了__str__(self)方法,那么就會打印從在這個方法中return的數據e.g1classCat:"""定義了一個Cat類"""#初始化對象def__init__(self,new_name,new_age):self.name=new_nameself.age=new_agedef__str__
系統 2019-09-27 17:55:09 1788
今天終于可以用wxPython開發GUI程序了,非常高興。把其中的一些注意點寫下來以供參考。在windowsXP平臺下,首先需要做以下環境的配置:1.首先是安裝python,安裝完之后將python/bin所在目錄添加到path中。2.安裝wxPython,此時要注意wxPython的版本要與前面python的版本一致。3.安裝py2exe,這是windows平臺下一個非常好的python程序發布工具,可以將python程序編譯成exe而脫離python環
系統 2019-09-27 17:55:05 1788
當我們在寫程序的時候,我們需要通過測試來驗證程序是否出錯或者存在問題,但是,編寫大量的測試來確保程序的每個細節都沒問題會顯得很繁瑣。在Python中,我們可以借助一些標準模塊來幫助我們自動完成測試過程,比如:unittest:一個通用的測試框架;doctest:一個更簡單的模塊,是為檢查文檔而設計的,但也非常適合用來編寫單元測試。下面,筆者將會簡單介紹這兩個模塊在測試中的應用。doctestdoctest模塊會搜索那些看起來像是python交互式會話中的代
系統 2019-09-27 17:55:04 1788
逗號代碼假定有下面這樣的列表:spam=['apples','bananas','tofu','cats']編寫一個函數,它以一個列表值作為參數,返回一個字符串。該字符串包含所有表項,表項之間以逗號和空格分隔,并在最后一個表項之前插入and。例如,將前面的spam列表傳遞給函數,將返回'apples,bananas,tofu,andcats'。但是你的函數應該能夠傳遞給它的任何列表。代碼如下:importcopydefconFun(nameList):n=
系統 2019-09-27 17:55:01 1788
硬幣兌換問題:給定總金額為A的一張紙幣,現要兌換成面額分別為a1,a2,....,an的硬幣,且希望所得到的硬幣個數最少。#動態規劃思想dp方程式如下#dp[0]=0#dp[i]=min{dp[i-coins[j]]+1},且其中i>=coins[j],0<=j
系統 2019-09-27 17:54:53 1788
前面說到了urllib2的簡單入門,下面整理了一部分urllib2的使用細節。1.Proxy的設置urllib2默認會使用環境變量http_proxy來設置HTTPProxy。如果想在程序中明確控制Proxy而不受環境變量的影響,可以使用代理。新建test14來實現一個簡單的代理Demo:復制代碼代碼如下:importurllib2enable_proxy=Trueproxy_handler=urllib2.ProxyHandler({"http":'ht
系統 2019-09-27 17:54:48 1788
該代碼主要是基于python實現判斷指定文件夾下是否存在指定后綴的文件。代碼如下:importosYour_Dir='你的文件夾/'Files=os.listdir(Your_Dir)forkinrange(len(Files)):#提取文件夾內所有文件的后綴Files[k]=os.path.splitext(Files[k])[1]Str2=['.wav','.mp3','.mp4']iflen(list(set(Str2).intersection(s
系統 2019-09-27 17:54:47 1788
關卡二:1.練習題1面向對象的理解要求:在類內定義一個可以重新設置私有屬性name的函數條件為字符串長度小于10,才可以修改.答:defSetName(self,newname):iflen(newname)<10:self.__name=newnameelse:print("error:名字太長!")在創建一個類之后需要調用什么函數?答:應調用__del__()函數.del()方法是手動調用還是類默認調用?答:手動調用如何訪問對象的屬性?答:使用(.)來
系統 2019-09-27 17:54:18 1788
給類或實例綁定其他方法(函數),需要注意問題:(1)定義方法(函數)時,要加self,如:defset_age(self,age):self.age=age(2)實例綁定方法與類綁定方法是不一樣的,實例綁定方法時是要借助函數的,類綁定方法時可以直接賦值的,如:classStudet(object):def__init__(self,name):self.name=name實例綁定方法:s1=Studet('Boo')fromtypesimportMetho
系統 2019-09-27 17:54:09 1788