将perl代码移植到python

时间:2017-12-20 13:56:16

标签: python class oop dictionary network-programming

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

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

  • " workunit",基本上是一个具有多个属性的设备 ipaddress,hostname,log_file_locations,results等。

  • "设置"和"运输"基本上说的字典是我们 做ssh或snmp以及它的设置是什么(userid / password, 社区字符串等。)

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

我当然也可以创建一个" Workunit"类,并创建一个基本列表" Workunit"对象,但我读的关于python越多越好" pythonic?"它感觉......任何有关"权利"在这种情况下的方法? (两者都有用)我确定。

1 个答案:

答案 0 :(得分: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):