Accessing parent objects
Jugurtha Hadjar
jugurtha.hadjar at gmail.com
Sun Mar 25 05:37:28 EDT 2018
On 03/24/2018 07:14 PM, D'Arcy Cain wrote:
> class C1(dict):
> class C2(object):
> def f(self):
> return X['field']
>
> O1 = C1()
> O1['field'] = 1
> O2 = O1.C2()
> print(O2.f())
I prefer to *feed* the child to the parent or vice versa. Simplifies
things like testing.
Something like this:
<---------------------------------------------------------------------->
class C1(object):
def __init__(self):
self.child = None
def foo(self):
print("I am {self.__class__.__name__} foo".format(self=self))
def adopt(self, child=None):
self.child = child
s = ("I am {self.__class__.__name__} and I adopted "
"{self.child.__class__.__name__}".format(self=self))
print(s)
class C2(object):
def __init__(self, parent=None):
self.parent = parent
def foo(self):
print("I am {self.__class__.__name__} foo".format(self=self))
self.parent.foo()
def adoptme(self, parent=None):
parent = parent or self.parent
if parent is None:
print("No parent yet")
else:
self.parent = parent
parent.adopt(self)
c2 = C2()
c2.adoptme() # No parent yet
c1 = C1()
c2.adoptme(c1) # I am C1 and I adopted C2
c2.foo() # I am C2 foo
# I am C1 foo
c1.adopt(c2) # I am C1 and I adopted C2
<-------------------------------------------------------------------->
--
~ Jugurtha Hadjar,
More information about the Python-list
mailing list