Yapamazsınız.
Örnekler, yalnızca üst sınıf yöntemleri ve öznitelikleri devralmaz, örnek öznitelikleri değil. İkisini karıştırmamalısın.
strauss.familyName
, Family
örneğinin bir örneği özniteliğidir. Person
örneklerinde, familyName
özniteliğinin kendi kopyaları olur.
normalde iki argüman almaya Person
yapıcısı kodlayacağınıza:
class Person(object):
def __init__(self, personName, family):
self.personName = personName
self.family = family
nerede Person
artık: Person
bir Family
örneği başvurusu tutmak için
class Person(Family):
def __init__(self, personName, familyName):
super(Person, self).__init__(familyName)
self.personName = personName
johaness = Person('Johaness', 'Strauss')
richard = Person('Richard', 'Strauss')
alternatif bir yaklaşım olacaktır Family
'dan devralınır. hoşuna kullanın:
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)
Kullanımı böyle:
strauss = Family('Strauss')
johaness = Person('Johaness', strauss)
richard = Person('Richard', strauss)
print johaness.family.familyName
Seçeneklerin iyi sunumu! –