looking for way to include many times some .py code from anotherpython code
Steve Holden
steve at holdenweb.com
Tue Mar 8 09:12:41 EST 2005
Martin MOKREJŠ wrote:
> Diez B. Roggisch wrote:
>
>>> See my post on Mar 2 about "automating assignment of class variables".
>>> I got no answers, maybe I wasn't clear enough ... :(
>>
>>
>>
>> Seems so - I for example didn't understand it.
>>
>>
>>> I need to define lots of variables. The variable names are often
>>> identical. The problem is that if I put such a code into a function ...
>>> no, I'm not going to pass anything to a function to get it returned
>>> back.
>>> I just want to get lots of variables assigned, that all. If I put them
>>> into module, it get's exectued only once unless I do reload. And I'd
>>> have
>>> to use: "from some import *", because mainly I'm interrested in
>>> assigning
>>> to self: self.x = "blah"
>>> self.y = "uhm"
>>
>>
>>
>> Okay, I try and guess: From your two posts I infer that you want to set
>> variables in instances. But you've got lots of these and you don't
>> want to
>> write code like this:
>>
>> class Foo:
>> def __init__(self, a, b, .....):
>> self.a = a
>> self.b = b
>> ....
>>
>>
>> If that is what you want, then this might help you: Put all the values
>> in a
>
>
> Good guess! ;)
>
>> dictionary - like this:
>>
>> my_vals = {"a": 1, "b" : 2, ....}
>>
>> There are plenty of other ways to create such a dictionary, but I won't
>> digress on that here.
>>
>> Now in your class, you pass than dict to your constructor and then simply
>> update the instance's __dict__ so that the keys-value-pairs in my_vals
>> become attributes:
>>
>> class Foo:
>>
>> def __init__(self, my_vals):
>> self.__dict__.update(my_vals)
>>
>> foo = Foo(my_vals)
>>
>> print foo.a
>>
>> -> 1
>>
>> Hope this helps,
>
>
> Sure. Thanks! Would you prefer exactly for this method over the method
> posted by Kent Johnson
> few minutes ago?
>
> Am I so deperately fighting the language? No-one here on the list needs
> to set hundreds
> variables at once somewhere in their code? I still don't get why:
>
Well, consider that you haven't actually made any kind of a case for
using variables!
If the names of these things are dynamic then why would you want to put
them in an object's namespace, when you could just as easily include
self.insDict = {}
in your __init__() method and then simply update self.insDict whenever
you want.
If you "set hundreds variables", and their names aren't predictable,
then presumably you will have to go through similar contortions to
access them.
So it is generally simpler just to use a dictionary to hold the values
whose names aren't known in advance. Techniques for inserting names into
namespaces are known (as you have discovered), but when a beginner wants
to know about them it's usually considered a sign of "fighting the
language".
So, think about this a while and then tell us exactly *why* it's so
important that these values are stored in variables.
> "include somefile.py" would be that non-pythonic so that it's not
> available, but
> I have already two choices how to proceed anyway. Thanks. ;)
>
> Now have to figure out how to assign them easily into the XML tree.
>
> martin
You do know there are lots of Python libraries that support XML, right?
regards
Steve
More information about the Python-list
mailing list