web-dev-qa-db-fra.com

Comment définir et obtenir un attribut de classe parent à partir d'une classe héritée en Python?

J'ai le Family et ses classes héritées Person. Comment obtenir l'attribut familyName de la classe Person?

class Family(object):
    def __init__(self, familyName):
        self.familyName = familyName

class Person(Family):
    def __init__(self, personName):
        self.personName = personName

Par exemple, laissez ces objets Family et Person:

strauss = Family('Strauss')
johaness = Person('Johaness')
richard = Person('Richard')

J'aimerais faire quelque chose comme:

print richard.familyName

et obtenir 'Strauss'. Comment puis-je faire ceci?

21
msampaio

En plus des suggestions de Martijns, vous pouvez également créer la personne à partir de l'instance Famille, permettant ainsi à la famille de garder une trace de ses membres:

class Person(object):
    def __init__(self, person_name, family):
        self.person_name = person_name
        self.family = family

    def __str__(self):
        return ' '.join((self.person_name, self.family.family_name))

class Family(object):
    def __init__(self, family_name):
        self.family_name = family_name
        self.members = []

    def add_person(self, person_name):
        person = Person(person_name, self)
        self.members.append(person)
        return person

    def __str__(self):
        return 'The %s family: ' % self.family_name + ', '.join(str(x) for x in self.members)

Utilisation comme celle-ci:

>>> strauss = Family('Strauss')
>>> johannes = strauss.add_person('Johannes')
>>> richard = strauss.add_person('Richard')
>>> 
>>> print johannes
Johannes Strauss
>>> print richard
Richard Strauss
>>> print strauss
The Strauss family: Johannes Strauss, Richard Strauss
5
Lennart Regebro