Объявите объекты как атрибут другого объекта в 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()

Другие вопросы по тегам