someone a écrit :
On Jun 18, 12:49 pm, James Mills <prolo...@shortcircuit.net.au> wrote:
On Fri, Jun 18, 2010 at 8:31 PM, someone <petshm...@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.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to