Can a child access parent attributes if that child added post-hoc as an attribute to the parent?
Bitswapper
bithead0101 at gmail.com
Fri Aug 23 10:11:52 EDT 2013
On Thursday, August 22, 2013 5:00:38 PM UTC-5, Bitswapper wrote:
> On Thursday, August 22, 2013 4:26:24 PM UTC-5, Prasad, Ramit wrote:
>
> > Bitswapper wrote:
>
> >
>
> > >
>
> >
>
> > > So I have a parent and child class:
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > class Map(object):
>
> >
>
> > > def __init__(self, name=''):
>
> >
>
> > > self.mapName = name
>
> >
>
> > > self.rules = {}
>
> >
>
> > >
>
> >
>
> > > class Rule(Map):
>
> >
>
> > > def __init__(self, number):
>
> >
>
> > > Map.__init__(self)
>
> >
>
> > > self.number = number
>
> >
>
> >
>
> >
>
> > This means that rules will never have a name. I think you need
>
> >
>
> > def __init__(self, name='', number=None):
>
> >
>
> > Map.__init__(self, name)
>
> >
>
> > self.number = number
>
> >
>
> > >
>
> >
>
> > > def __repr__(self):
>
> >
>
> > > return "Map " + self.mapName + " rule number " + str(self.number)
>
> >
>
> > >
>
> >
>
> > > if __name__ == "__main__":
>
> >
>
> > > map = Map("thismap")
>
> >
>
> > > rule = Rule(1)
>
> >
>
> > > map.rules[rule.number] = rule
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > with the above:
>
> >
>
> > > $ python -i inherit.py
>
> >
>
> > > >>> map
>
> >
>
> > > <__main__.Map object at 0xb7e889ec>
>
> >
>
> > > >>> map.rules
>
> >
>
> > > {1: Map rule number 1}
>
> >
>
> > > >>> map.rules[1]
>
> >
>
> > > Map rule number 1
>
> >
>
> > > >>>
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > I have tried adding:
>
> >
>
> > > map.rules[2] = Rule(2)
>
> >
>
> > >
>
> >
>
> > > but that still gets:
>
> >
>
> > >
>
> >
>
> > > $ python -i inherit.py
>
> >
>
> > > >>> map.rules
>
> >
>
> > > {1: Map rule number 1, 2: Map rule number 2}
>
> >
>
> > > >>>
>
> >
>
> > >
>
> >
>
> > > and:
>
> >
>
> > > map.rule = Rule(3)
>
> >
>
> > >
>
> >
>
> > > which also doesn't really get me what I'm looking for:
>
> >
>
> > >
>
> >
>
> > > >>> map.rules
>
> >
>
> > > {1: Map rule number 1, 2: Map rule number 2}
>
> >
>
> > > >>> map.rule
>
> >
>
> > > Map rule number 3
>
> >
>
> > > >>>
>
> >
>
> > >
>
> >
>
> > >
>
> >
>
> > > It seems to me what I'm trying to do is link an arbitrary child instance to an arbitrary instance of a
>
> >
>
> > > parent class, which in this case would be handy Because I'd like to populate a map with rules and
>
> >
>
> > > print the rules including the parent map name for each rule. I'm just not sure how I would go about
>
> >
>
> > > doing this in python.
>
> >
>
> > >
>
> >
>
> > > Any thoughts are welcome, and thanks in advance
>
> >
>
> >
>
> >
>
> > I not sure what you mean by the above. Can you provide an example of what you want to occur and the output for it?
>
> >
>
>
>
> I was thinking of:
>
>
>
> map = Map('myMap')
>
> map.rules[1] = Rule(1)
>
> map.rules[2] = Rule(2)
>
>
>
> >>> print map.rules[1]
>
> >>> Map myMap rule number 1
>
> >>> print map.rules[2]
>
> >>> Map myMap rule number 2
>
> >>>
>
> >>> map.mapName = "newname"
>
> >>> print map.rules[1]
>
> >>> Map newname rule number 1
>
> >>> print map.rules[2]
>
> >>> Map newname rule number 2
Or rather:
map = Map('myMap')
map.rules[1] = Rule(1)
map.rules[2] = Rule(2)
>>> print map.rules[1]
>>> Map myMap rule number 1
>>> print map.rules[2]
>>> Map myMap rule number 2
>>>
>>> map.mapName = "newname"
>>> print map.rules[1]
>>> Map newname rule number 1
>>> print map.rules[2]
>>> Map newname rule number 2
More information about the Python-list
mailing list