retval = super().__new__(cls, name, bases, classdict)
retval._fields = OrderedDict()
for supercls in reversed(bases):
- retval._fields.update((k,v) for (k,v) in supercls.__dict__.items() if isinstance(v, Field))
+ if hasattr(supercls, '_fields'):
+ retval._fields.update((k,v) for (k,v) in supercls._fields.items())
retval._fields.update((k,v) for (k,v) in classdict.items() if isinstance(v, Field))
return retval
class Foo(FinTS3Segment):
c = DataElementGroupField(type=B)
+def test_segment_subclassing():
+ class Base1(FinTS3Segment):
+ a = NumericField()
+
+ class Base2(Base1):
+ b = NumericField()
+
+ class ISUBTST1(Base2):
+ c = NumericField()
+
+ assert list( ISUBTST1._fields.keys() ) == ['header', 'a', 'b', 'c']
+
def test_descriptor_subclassing():
a = DataElementField(type='an')
assert isinstance(a, AlphanumericField)