2012-04-18 56 views
2

我已經成功地寫了一個PowerShell腳本其中:改寫乾淨OOP的Python風格程序腳本

  • 查詢AD來獲取計算機列表
  • 查詢每一臺計算機通過WMI獲得軟件/硬件信息
  • 將收集到的數據插入MySQL數據庫。

腳本工作正常,但我不喜歡它是如何實現的。它是程序性的,並且有很多代碼重複,每當我需要改變某些東西時會造成混亂。

現在,我想問你:什麼是使用OOP在Python中實現它的最乾淨的方法?我想類似這樣的(僞)的東西:

Class ADquery 
    function get_computers(UO): return a list of computers in the specified UO 

Class Computer 
    constructor(computername) 
    function query(): connect to the computer and pull the info through WMI 
    function print(): print the collected info to the console (debug) 
    property RAM 
    property CPU 
    ... 

問題:

  1. 爲了收集到的數據保存到數據庫中,我必須創建另一個對象(如數據庫)並將Computer對象傳遞給他或將成員函數添加到Computer類(例如save_db())?

  2. 如果我選擇第二個選項,當我處理多個對象時,這不會導致大量的MySQL連接?

非常感謝和我的英語不好

+0

在http://codereview.stackexchange.com上發佈您的完整腳本(或其關鍵部分)並要求人們改進它可能會更有用。 – georg 2012-04-18 07:18:10

+0

謝謝@ thg435,但我沒有寫新腳本的一行 – Delta 2012-04-18 07:24:02

回答

2

該架構看起來合理的,我很抱歉。

  1. 你也可以做,我不確定它真的與這樣的小應用程序有很大的區別。

  2. 可能。根據實施方式的不同,您可以獲得很多連接。如果你正在做一個合理數量的插入,我會把它們放在一個列表中,並且一次插入所有插入,如果你的代碼可能的話。

2

您還可以從互聯網或您當地的書店購買面向對象的設計書籍,例如, Rumbaugh et al.。我還建議閱讀設計模式,例如該書由Gamma et. al.。我目前正在這樣做,並且查看如何解決特定問題的標準模式以塑造關於面向對象編程的思考過程是非常有幫助的。

ps你的英語並不差(注意,我也不是母語;))。

+0

+1。好點子。我建議**任何**新的或學習開發者! – 2012-04-18 07:54:23

+1

是不是一個開發人員總是學習:) – 2012-04-18 08:00:22

+0

謝謝保羅,我剛剛訂購了設計模式:) – Delta 2012-04-18 08:53:06