【问题标题】:right approach for porting perl code to python将 perl 代码移植到 python 的正确方法
【发布时间】:2017-12-20 13:56:16
【问题描述】:

我想创建大约十几个与网络设备通信的 python 脚本,其中大多数会执行某种 telnet/ssh/snmp 操作,要么获取信息,要么修改它。

在 perl 中,我通常会使用一个可以正常工作的嵌套哈希,尝试将其重新写入 python 中的嵌套字典并且这有效....但我不确定我是否应该使用类。基本上我需要的最重要的数据结构是:

  • “workunit”,基本上是一个具有许多属性的设备,例如 ipaddress、主机名、log_file_locations、结果等。

  • "settings" 和 "transport" 字典基本上说的是我们 做 ssh 或 snmp 以及它的设置是什么(用户名/密码, 社区字符串等)

因此,例如,如果我为 10 个设备运行一个脚本,那么我通常会有一个字典字典,其中 ipaddress 作为该字典的键。

我当然也可以创建一个“Workunit”类,并创建一个“Workunit”对象的基本列表,但是我对 python 的了解越多,“pythonic?”就越少。感觉...对这种情况下“正确”方法的任何见解? (我敢肯定,两者都会起作用)。

【问题讨论】:

    标签: python class oop dictionary network-programming


    【解决方案1】:

    这最终取决于你。如果您想让您的代码更可重用,那么请花时间在 OOP 下实现功能。由于您计划创建 12 个左右的脚本,因此这可能是值得的。您描述的结构可以在您的脚本可以引用的库中创建。

    在python中实现一个自定义数据类型的字典,只需要实现几个必需的methods

    class MyThing:
    def __init__(self,name,location,length):
        self.name = name
        self.location = location
        self.length = length
    
    def __hash__(self):
        return hash((self.name, self.location))
    
    def __eq__(self, other):
        return (self.name, self.location) == (other.name, other.location)
    
    def __ne__(self, other):
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2017-07-25
      • 1970-01-01
      • 2015-08-20
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多