Rich Comparison
oser.ByteStruct and oser.BitStruct offer full support
for rich comparisons.
Comparison is done by converting the members of both compared instances to lists and applying the compare operation on the lists. This leads to a hierarchical comparison in lexicographic order.
A comparison for == None always returns False and != None always returns True.
Example
class Struct(oser.ByteStruct):
    def __init__(self):
        super(Struct, self).__init__()
        self.a = oser.UBInt8(1)
        self.b = oser.UBInt16(2)
a = Struct()
b = Struct()
a == b
# True
b.b.set(3)
a != b
# True
a < b
# True
a <= b
# True
a.a.set(23)
a > b
# True
a >= b
# True