empty classes as c structs?
Scott David Daniels
Scott.Daniels at Acm.Org
Fri Feb 4 17:57:05 EST 2005
Christopher J. Bottaro wrote:
> I find myself doing the following very often:
>
> class Struct:
> pass
> ...
> blah = Struct()
> blah.some_field = x
> blah.other_field = y
> ...
>
> Is there a better way to do this? Is this considered bad programming
> practice? I don't like using tuples (or lists) because I'd rather use
> symbolic names, rather than numeric subscripts. Also, I don't like having
> to declare the empty Struct class everytime I want to do this (which is
> very often).
I have a module of my own (data.py) that I use a lot. It contains:
class Data(object):
def __init__(self, **initial):
for name, val in initial.iteritems():
setattr(self, name, val)
def __repr__(self):
names = sorted([name for name in dir(self)
if not name.startswith('_')],
key=lambda name: (name.lower(), name))
return '%s(%s)' % (self.__class__.__name__, ', '.join([
'%s=%r' % (nm, getattr(self, nm)) for nm in names]))
The advantage is that I can see the value in the Data object simply
by printing the object. I use it like:
from data import Data
blah = Data(some_field=3, other_field=13)
...
blah.other_field = 23
...
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list