On Jun 8, 9:37 am, Peter Otten <__pete...@web.de> wrote: > Ross Williamson wrote: > > Hi Everyone, > > > Just a quick question - Is it possible to assign class variables in > > the __init__() - i.e. somthing like: > > > def __init__(self,self.source = "test", self.length = 1) > > > rather than > > > def __init__(self,source = "test", length = 1): > > No. If you are just lazy, try > > >>> import sys > >>> def update_self(): > > ... d = sys._getframe(1) > ... d = d.f_locals > ... self = d.pop("self") > ... for k, v in d.iteritems(): > ... setattr(self, k, v) > ...>>> class A(object): > > ... def __init__(self, source="test", length=1): > ... update_self() > ... def __repr__(self): > ... return "A(source=%r, length=%r)" % (self.source, > self.length) > ...>>> A() > > A(source='test', length=1)>>> A(length=42) > > A(source='test', length=42) > > Personally, I prefer explicit assignments inside __init__(). > > Peter
Or more simply def __init__(self, source = "test", length = 1): for (k, v) in locals().iteritems(): if k != 'self': setattr(self, k, v) -- http://mail.python.org/mailman/listinfo/python-list