Can a child access parent attributes if that child added post-hoc asan attribute to the parent?

Discussion in 'Python' started by Bitswapper, Aug 22, 2013.

  1. Bitswapper

    Bitswapper Guest

    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

    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

    I have tried adding:
    map.rules[2] = Rule(2)

    but that still gets:

    $ python -i inherit.py
    and:
    map.rule = Rule(3)

    which also doesn't really get me what I'm looking for:


    It seems to me what I'm trying to do is link an arbitrary child instance toan arbitrary instance of a parent class, which in this case would be handyBecause 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
     
    Bitswapper, Aug 22, 2013
    #1
    1. Advertisements

  2. 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
    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?


    ~Ramit

    This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy andcompleteness of information, viruses, confidentiality, legal privilege, andlegal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.
     
    Prasad, Ramit, Aug 22, 2013
    #2
    1. Advertisements

  3. Bitswapper

    Bitswapper Guest

    I was thinking of:

    map = Map('myMap')
    map.rules[1] = Rule[1]
    map.rules[2] = Rule[2]
     
    Bitswapper, Aug 22, 2013
    #3
  4. Bitswapper

    Bitswapper Guest

    Or rather:

    map = Map('myMap')
    map.rules[1] = Rule(1)
    map.rules[2] = Rule(2)


     
    Bitswapper, Aug 23, 2013
    #4
  5. Bitswapper

    Bitswapper Guest


    Actually yea, that makes sense. I was looking for a way for a child to 'automagically' inherit parent instance-specific data via inheritance only by virtue of being a child of a parent instance. What you're suggesting makes more sense.

    Thanks!
     
    Bitswapper, Aug 23, 2013
    #5
  6. Good point. Composition definitely makes more sense as I was
    confused by how the inheritance was supposed to work anyway. :)


    ~Ramit



    This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy andcompleteness of information, viruses, confidentiality, legal privilege, andlegal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.
     
    Prasad, Ramit, Aug 27, 2013
    #6
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.