You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
70 lines
1.8 KiB
2 years ago
|
# -*- encoding: utf-8 -*-
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
import unittest
|
||
|
|
||
|
|
||
|
class Params(object):
|
||
|
def __init__(self, **kwds):
|
||
|
"""
|
||
|
Utility class to create parameter lists
|
||
|
create using:
|
||
|
p = Params(abc=2.0, defg = 3.0, lunch='sandwich')
|
||
|
reference using:
|
||
|
p.abc, p.defg, etc.
|
||
|
Supports getting the keys, finding whether a key exists, returning the strucure as a simple dictionary,
|
||
|
and printing (show) the parameter structure.
|
||
|
"""
|
||
|
self.__dict__.update(kwds)
|
||
|
|
||
|
def additem(self, key, value):
|
||
|
self.__dict__[key] = value
|
||
|
|
||
|
def getkeys(self):
|
||
|
"""
|
||
|
Get the keys in the current dictionary
|
||
|
"""
|
||
|
return self.__dict__.keys()
|
||
|
|
||
|
def haskey(self, key):
|
||
|
"""
|
||
|
Find out if the param list has a specific key in it
|
||
|
"""
|
||
|
if key in self.__dict__.keys():
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def todict(self):
|
||
|
"""
|
||
|
convert param list to standard dictionary
|
||
|
Useful when writing the data
|
||
|
"""
|
||
|
r = {}
|
||
|
for dictelement in self.__dict__:
|
||
|
if isinstance(self.__dict__[dictelement], Params):
|
||
|
# print 'nested: ', dictelement
|
||
|
r[dictelement] = self.__dict__[dictelement].todict()
|
||
|
else:
|
||
|
r[dictelement] = self.__dict__[dictelement]
|
||
|
return r
|
||
|
|
||
|
def show(self, printFlag=True):
|
||
|
"""
|
||
|
print the parameter block created in Parameter Init
|
||
|
"""
|
||
|
print("-------- Parameter Block ----------")
|
||
|
for key in self.__dict__.keys():
|
||
|
print("%15s = " % (key), eval("self.%s" % key))
|
||
|
print("-------- ---------------------- ----------")
|
||
|
|
||
|
|
||
|
class ParamTests(unittest.TestCase):
|
||
|
def setUp(self):
|
||
|
pass
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|