Есть ли способ удобно определить C-подобную структуру в Python? Я устал писать такие вещи, как:
class MyStruct(): def __init__(self, field1, field2, field3): self.field1 = field1 self.field2 = field2 self.field3 = field3
Я думаю, что словарь структуры Python подходит для этого требования.
d = dict{} d[field1] = field1 d[field2] = field2 d[field2] = field3
https://stackoverflow.com/a/32448434/159695 не работает в Python3.
https://stackoverflow.com/a/35993/159695 работает в Python3.
И я расширяю его, чтобы добавить значения по умолчанию.
class myStruct: def __init__(self, **kwds): self.x=0 self.__dict__.update(kwds) # Must be last to accept assigned member variable. def __repr__(self): args = ['%s=%s' % (k, repr(v)) for (k,v) in vars(self).items()] return '%s(%s)' % ( self.__class__.__qualname__, ', '.join(args) ) a=myStruct() b=myStruct(x=3,y='test') c=myStruct(x='str') >>> a myStruct(x=0) >>> b myStruct(x=3, y='test') >>> c myStruct(x='str')