Объявите объекты как атрибут другого объекта в Python
Я пытаюсь создать дерево объектов / не классов. Я имею в виду, что я не хочу создавать отношения между объектами на уровне прототипа, но на уровне экземпляра, поэтому отношения между объектами будут решаться с помощью кода.
Здесь я написал что-то
class human :
def __init__ (self,Name,Surname,Gender,Age,Father,Mother) :
self.Name = Name
self.Surname = Surname
self.Gender = Gender
self.Age = Age
self.Father = Father
self.Mother = Mother
class family :
def __init__ (self,Surname,Members) :
self.Surname = Surname
self.Members = Members
def ListMembers (self) :
for member in self.Members :
print (self.Surname +' family member ' +member.Name + ' '+ member.Surname + ' is ' + member.Age + " years old ")
human1 = human( 'Mary','Walter','Female','42','Jason White','Sally White')
human2 = human('Charles', 'Walter', 'Male', '45', 'Samuel Ribbon', 'Angie Ribbon')
human3 = human('Claire', 'White', 'Female', '16', 'Charles Walter', 'Mary Walter')
WalterFamily = family('Walter',(human1,human2,human3))
WalterFamily.ListMembers
Когда я запускаю этот код, WalterFamily.ListMembers ничего не печатает.
Каков точный способ вложения объектов в другой объект? Как я пытался сделать здесь: вложив 3 человека в семью, а также достигнув атрибутов этих объектов..
2 ответа
Последняя строка кода не то, что вы хотите. Все функции, которые принадлежат к классу (например, ваш ListMembers
функция) - это функция, хранящаяся в имени переменной.
Когда у вас есть то, что у вас есть:
WalterFamily.ListMembers
Вы печатаете только объект функции, хранящийся в ListMembers
переменная. Чтобы на самом деле это назвать, вам нужно добавить круглые скобки.
WalterFamily.ListMembers()
В Python все является объектом, включая функции. Так WalterFamily.ListMembers
это просто ссылка на объект. Для вызова нужной вам функции WalterFamily.ListMembers()