How to set object parameters nicely?
Diez B. Roggisch
deets at nospam.web.de
Tue Dec 1 18:13:35 EST 2009
allen.fowler schrieb:
> Hello,
>
> I've got a bunch of code that looks something like:
>
> class MyOb(object):
> def __init__(self, p1=None, p2=None, p3=None, ...):
> self.p1 = p1
> self.p2 = p2
> self.p3 = p3
> self.pN = ...
>
>
> ob1 = MyOb(p1="Tom", p3="New York")
> ob2 = MyOb(p1="Joe", p2="joe at host", p3="New Jersey")
>
> ... and so on.
>
> This is fine for only a few parameters, but it's very ugly and a lot
> of duplicate typing once I've got 10+ parameters and 5 kinds of
> objects.
>
> Is there a better way to do this?
There are some tricks. Like this
def __init__(self, p1=None, ...):
d = locals()
del d["self"]
self.__dict__.update(d)
However, it looks like a code-smell for me if you have 10+ paramters.
Diez
More information about the Python-list
mailing list