如何将python字典作为对象使用snmp OID作为键

时间:2017-08-24 05:28:29

标签: python class dictionary

我试图传递一个字典,该字典的密钥为SNMP OID,值为字典,但有一些值:

d = {'1.3.6.1.6.3.1.1.5.1': {'text':"something","help":'somethingelse','param':1},
     '1.3.6.1.6.3.1.1.5.2':{'text':"something for this oid","help":'somethingelse_for this','param':2} ,
     and so on for other 1000 snmp OIDs }

现在我想将这个字典传递给一个类,将它转换为字典对象并获取详细信息

class Struct(object):
def __init__(self, adict):
    """Convert a dictionary to a class

    @param :adict Dictionary
    """
    self.__dict__.update(adict)
    for k, v in adict.items():
        if isinstance(v, dict):
            self.__dict__[k] = Struct(v)


s = Struct(d)
s.? (what should be given here)

应该更换什么?作为一个OID,我不能用引号(""),因为我需要传递属性? 如果我通过

,我会收到无效的语法错误
s.'1.3.6.1.6.3.1.1.5.1'
or
s.1.3.6.1.6.3.1.1.5.1

另外说,以某种方式传递oid属性后,例如s.some_oid,我会得到一个字典对象,但我希望它返回该OID的值以及字典对象。有可能吗?

意思是如果我通过s.some_oid我应该

{'text':"something","help":'somethingelse','param':1}

还有一个字典对象,当使用s.some_oid_text时我应该得到

something

1 个答案:

答案 0 :(得分:1)

您尚未为您的班级定义 getitem 功能。一旦定义它,就可以将struct对象用作任何普通字典。另外,要将项目作为Dictionary对象获取,还需要在Struct类本身中创建一个函数。为了您的参考,我创建了函数'itemsAsDict()'。

mu, sigma