main and dependent objects

A

andrea crotti

I am in a situation where I have a class Obj which contains many
attributes, and also contains logically another object of class
Dependent.

This dependent_object, however, also needs to access many fields of the
original class, so at the moment we did something like this:


class Dependent:
def __init__(self, orig):
self.orig = orig

def using_other_attributes(self):
print("Using attr1", self.orig.attr1)


class Obj:
def __init__(self):
self.attr1 = "attr1"
self.attr2 = "attr2"
self.attr3 = "attr3"

self.dependent_object = Dependent(self)


But I'm not so sure it's a good idea, it's a bit smelly..
Any other suggestion about how to get a similar result?

I could of course passing all the arguments needed to the constructor of
Dependent, but it's a bit tedious..


Thanks,
Andrea
 
U

Ulrich Eckhardt

Am 13.09.2012 14:51, schrieb andrea crotti:
I am in a situation where I have a class Obj which contains many
attributes, and also contains logically another object of class
Dependent.

This dependent_object, however, also needs to access many fields of the
original class, so at the moment we did something like this: [...]
I could of course passing all the arguments needed to the constructor of
Dependent, but it's a bit tedious..

Jean-Michel already asked a good question, i.e. whether those two
classes should be separate at all. I'll ask a similar question: Can't
the shared data be put into a third, separate class? That way passing
all the needed arguments wouldn't be tedious any more. Also, it makes
clear that both outer and inner class depend on common data, but that
the inner class doesn't depend on the outer beyond that.

Now, just to get at least something Python-specific into this, you could
override the __getitem__ of the inner class and transparently look up
the item in the outer class if the inner class doesn't have it.

Uli
 
A

alex23

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,001
Messages
2,570,254
Members
46,850
Latest member
VMRKlaus8

Latest Threads

Top