iT邦幫忙

0

python 實體物件,與一般的函式

第一張圖用實體物件來取得檔案資料
二三張圖是只用函式來達成目的

我想問的是下面的方法應該比較簡單啊
為甚麼要用實體物件
用函式寫的話
要當模組使用, 在主程式撰寫也比較方便
實體物件有甚麼特別的功用嗎

還有, 初始化函式__init__ 固定不回傳東西嗎, 如果在下面return東西會造成程式錯誤嗎

追加個問題 open(檔案...) 只能開啟 檔名.txt的檔案嗎 檔名.py的檔案為甚麼開不了

https://ithelp.ithome.com.tw/upload/images/20190730/20119136lTEdprWMO0.pnghttps://ithelp.ithome.com.tw/upload/images/20190730/20119136W6Zp9id7PQ.pnghttps://ithelp.ithome.com.tw/upload/images/20190730/201191366k30f1Fewd.png

看更多先前的討論...收起先前的討論...
ccutmis iT邦高手 9 級 ‧ 2019-07-30 16:08:46 檢舉
結構化程式設計 與 物件導向程式設計 之間的區別
https://twideem.github.io/pages/instantcoffee/19950206A.html
ps.我只是隨意搜尋一個網址給樓主參考
ccutmis iT邦高手 9 級 ‧ 2019-07-30 16:55:22 檢舉
"追加個問題 open(檔案...) 只能開啟 檔名.txt的檔案嗎 檔名.py的檔案為甚麼開不了" 我試過開的了
with open(要開的檔案,'r') .... 我猜是你在open裡面的那個讀or寫參數沒設好
Python的庫是可以自由擴充的,那一開始除了內建函數外,把安裝預建庫跟自擴充庫看成一樣的處理方式,當成是物件處理,豈不美哉?
為什麼要把Python跟C/VB6看成一樣的東西?內建沒有的就自己刻?
pip install進來就可以用,不好嗎?
ccutmis iT邦高手 9 級 ‧ 2019-07-31 09:54:32 檢舉
我覺得樓主可能是自學,
先把傳統結構化程式跟物件導向程式的差異理解一下會比較好,
現在主流的程式語言很少分什麼結構化程式還是物件導向了,
都是看用的人怎麼寫。
例如Python可以用結構化程式的寫法,也可以用物件導向的寫法,
but重點: 老闆或主管關心的不是你用什麼寫法,而是什麼時候結案。

1 個回答

0
froce
iT邦大師 4 級 ‧ 2019-07-31 17:08:33

1.有些東西你不用物件導向去做,會很難做,並且要重複大量的code。
像某些設計模式的效果。
2.之前有說到魔術方法,也就是雙下底線包住的物件方法,這種方法有特定的用途,你必須瞭解他的規範,要不然覆寫後物件會產生非預期的行為。
__init__也是其中一種,因此有他既定的規則要遵守。
他不能回傳None以外的值,也就是你一定要寫return的話,就是像下面這樣:

class TestCLS:
    def __init__(self, x):
        return

TestCLS(1)  # <__main__.TestCLS object at 0x10b2574a8>


class TestCLS2:
    def __init__(self, x):
        return None
        
TestCLS2(1)  # <__main__.TestCLS2 object at 0x10b2574e0>

如果傳的是其他值,會很明白的告訴你:

TypeError: __init__() should return None, not '<傳回的類型>'

我要發表回答

立即登入回答