2015-05-08 69 views
2

新手Python的問題在這裏 - 我寫了一個Python實用工具,當給出2個不同文件的屬性時進行磁盤空間計算。儘可能使用對象是Pythonic嗎?

我應該用適合轉換的方法創建一個'文件'類,然後創建每個文件作爲該類的一個實例嗎?我對Python很陌生,但對Perl有用,而且我相信在Perl中(我可能是錯的,是自學的),從我看到的例子來看,大多數Perl不是OO。

背景信息 - 這些是IBM z/OS(大型機)數據集,並且在特定磁盤類型和文件組織(它是塊大小)上給出文件的分配屬性,然後爲不同的分配參數磁盤類型&組織,空間要求可能差異很大。

+1

我想知道這對於程序員來說是否更合適的問題.stackexchange,但我不確定。 – kojiro

+0

他正在編寫一個實用程序來計算磁盤空間......在python中,你可以用60行代碼來完成它。你能解釋爲什麼在這種情況下需要一個類! – function

+1

維基百科稱Python爲「多範式」,它向我表明,如果你不喜歡它,你基本上可以避免任何OO。 – Kevin

回答

7

定義挑剔前言:Python中的一切都是技術上的對象,甚至是功能和數字。我會假設你的意思是你的問題中的類和功能。

其實我認爲關於Python的一個偉大的事情是它並不像其他一些語言(例如Java和C#)那樣包含絕對的所有類。

Python中完全可以接受(並且內置模塊做了很多)來定義模塊級函數,而不是將所有邏輯封裝在對象中。

也就是說,類的確有它們的位置,例如,當您對單個數據執行多個操作時,尤其是當這些操作更改數據並且希望保持其狀態封裝時。

1

對於你的問題,你的要求..A簡短的答案是「否」

0
  1. 對象的使用本身並不是「面向對象」的。函數式編程也使用對象,但方式不同。儘管Python在幕後使用了很多對象,Python仍然可以以非常FP的方式使用。
  2. 過度使用原語可能是一個問題,但無法說出這是否適用於沒有更多數據的情況。

我認爲面向對象是一種界面設計方法:如果您創建的工具可以直接與具有可預測方法的對象進行交互(並且可以替代),那麼通過一切手段創建對象。但是,如果交互很容易用模塊級功能來描述,那麼不要過於努力地將代碼設計到類中。

0

首要的 - Pythonic是一個需要消失的術語,最好與所有使用它的人一起使用。這並不意味着什麼,它被那些不能用理性來證明任何理由的人使用,所以他們需要一個強制性的術語來證明他們的廢話。

但是,在軟件開發中,您永遠不必使用面向對象的概念,因爲所有的OOP都可以輕鬆地使用函數和可靠的意大利麪細條來編寫。但問題是 - 在我的解決方案中使用對象是否有意義?

要了解何時以及如何使用它,您必須問清究竟是面向對象編程。這本書已經很好的解釋了這本非常古老的,但也是免費的,名爲Thinking in java的書,我認爲它是用OO術語思考的101聖經。我強烈要求你抓住free copy並閱讀第一章的幾段。

因爲如果你不瞭解面向對象的方法,你如何正確地應用它?當你這樣做 - 那麼何時使用它,或不使用它,變得清晰,因爲你可以清楚地將現實生活中的項目和交互轉化爲抽象對象。這是指導原則 - 將給定的操作,項目或數據轉換爲OOP模型是直接而合乎邏輯的 - 那麼您應該這樣做。

相關問題