@@ -14,12 +14,12 @@ class Struct(AbstractType):
1414 def __init__ (self , * args , ** kwargs ):
1515 if len (args ) == len (self .SCHEMA .fields ):
1616 for i , name in enumerate (self .SCHEMA .names ):
17- self . __dict__ [ name ] = args [i ]
17+ setattr ( self , name , args [i ])
1818 elif len (args ) > 0 :
1919 raise ValueError ('Args must be empty or mirror schema' )
2020 else :
2121 for name in self .SCHEMA .names :
22- self . __dict__ [ name ] = kwargs .pop (name , None )
22+ setattr ( self , name , kwargs .pop (name , None ) )
2323 if kwargs :
2424 raise ValueError ('Keyword(s) not in schema %s: %s'
2525 % (list (self .SCHEMA .names ),
@@ -30,7 +30,6 @@ def __init__(self, *args, **kwargs):
3030 # causes instances to "leak" to garbage
3131 self .encode = WeakMethod (self ._encode_self )
3232
33-
3433 @classmethod
3534 def encode (cls , item ): # pylint: disable=E0202
3635 bits = []
@@ -40,7 +39,7 @@ def encode(cls, item): # pylint: disable=E0202
4039
4140 def _encode_self (self ):
4241 return self .SCHEMA .encode (
43- [self . __dict__ [ name ] for name in self .SCHEMA .names ]
42+ [getattr ( self , name ) for name in self .SCHEMA .names ]
4443 )
4544
4645 @classmethod
@@ -52,12 +51,12 @@ def decode(cls, data):
5251 def get_item (self , name ):
5352 if name not in self .SCHEMA .names :
5453 raise KeyError ("%s is not in the schema" % name )
55- return self . __dict__ [ name ]
54+ return getattr ( self , name )
5655
5756 def __repr__ (self ):
5857 key_vals = []
5958 for name , field in zip (self .SCHEMA .names , self .SCHEMA .fields ):
60- key_vals .append ('%s=%s' % (name , field .repr (self . __dict__ [ name ] )))
59+ key_vals .append ('%s=%s' % (name , field .repr (getattr ( self , name ) )))
6160 return self .__class__ .__name__ + '(' + ', ' .join (key_vals ) + ')'
6261
6362 def __hash__ (self ):
@@ -67,6 +66,6 @@ def __eq__(self, other):
6766 if self .SCHEMA != other .SCHEMA :
6867 return False
6968 for attr in self .SCHEMA .names :
70- if self . __dict__ [ attr ] != other . __dict__ [ attr ] :
69+ if getattr ( self , attr ) != getattr ( other , attr ) :
7170 return False
7271 return True
0 commit comments