assign class variable in __init__
Peter Otten
__peter__ at web.de
Tue Jun 8 12:37:31 EDT 2010
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
More information about the Python-list
mailing list