variable variables

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Fri Jun 18 08:05:13 EDT 2010


someone a écrit :
> On Jun 18, 12:49 pm, James Mills <prolo... at shortcircuit.net.au> wrote:
>> On Fri, Jun 18, 2010 at 8:31 PM, someone <petshm... at googlemail.com> wrote:
>>> I was looking for a "short way" to do it because I have a lot
>>> "some_object.attr.attr or some_object.other_attr.attr" in code. it
>>> looks like I cannot replace attr with just other variable and must
>>> type some_object.other_attr.attr or your solution which is however
>>> longer to type :)
>> It would actually help to see some code.
>>
> 
> here it is, In Foo I'd like to have instead of A self.type and the
> same in class B
> 
> from some_module import some_object
> 
> class Foo:
>     def __init__(self):
>         self.type = 'A'
> 
>     def printAttr(self):
>         some_object.A.B
>         some_object.A.C
>         some_object.A.D
>         some_object.A.E
>         some_object.A.F
>         some_object.A.G
> 
> class Bar:
>     def __init__(self):
>         self.type = 'B'
> 
>     def printAttr(self):
>         some_object.B.B
>         some_object.B.C
>         some_object.B.D
>         some_object.B.E
>         some_object.B.F
>         some_object.B.G
> 


from some_module import some_object

def print_attributes(obj, *attribs):
   for attr in attribs:
     print getattr(obj, attr, None)

class Foo(object):
   type = 'A'

   def print_attr(self):
     print_attributes(getattr(someobject, self.type), *"BCDEFG")

class Bar(Foo)
   type = 'B'


Still has a "code smell" thing to me, but hard to say not knowing the 
real code and context.



More information about the Python-list mailing list