用干净的OOP Python风格重写一个过程脚本

时间:2012-04-18 07:00:46

标签: python coding-style wmi implementation

我已经成功编写了一个Powershell脚本:

  • 查询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连接?

  3. 非常感谢,抱歉我的英语不好

2 个答案:

答案 0 :(得分:2)

这种架构对我来说很合理。

  1. 你可以做任何一件事,我不确定这对这样的小型应用程序有什么影响。

  2. 潜在。根据它的实现方式,您可以获得大量连接。如果您正在进行合理数量的插入,我会将它们粘贴在一个列表中并立即插入所有插入,如果可以使用您的代码。

答案 1 :(得分:2)

您还可以从互联网或本地书店获取面向对象设计书籍,例如: Rumbaugh et al.。我还建议阅读设计模式,例如Gamma et. al.的书。我现在正在这样做,看看如何解决特定问题的标准模式来塑造关于面向对象编程的思维过程真的很有帮助。

ps你的英语一点也不差(注意我也不是母语;))。