Python对象创建具有3个聚合关系成员的组

Posted

技术标签:

【中文标题】Python对象创建具有3个聚合关系成员的组【英文标题】:Python object creating a group with 3 members of aggregation relationship 【发布时间】:2020-10-30 11:21:39 【问题描述】:

我有一个任务是使用类创建一个 python 代码来创建一个有 3 个成员的组(聚合关系)。到目前为止,这是我的代码:

class Member:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def getInfo(self):
        memberInfo = "Name: " + str(self.name) + "." + "Age: " + str(self.age)
        return memberInfo

class Group:
    def __init__(self,name):
        self.name = name
        self.memlist = []
    def addMember(self,member):
        self.memlist.append(member)

    def getInfo(self):
        info = "Member List: \n"
        for i in range(len(self.memlist)):
            info += self.memlist[i].getInfo() + "\n"
            print(info)
            break
        
    
mem1 = Member("Chi",20)
mem2 = Member("Bach",7)
mem3 = Member("Gen", 22)

group1 = Group("Siblings")
group1.addMember(mem1)
group1.addMember(mem2)
print(group1.getInfo())
print(mem2.getInfo())
print(group1.memList)

但它显示了一个错误:AttributeError: 'Group' object has no attribute 'memList'。有什么办法可以解决这个问题吗?

【问题讨论】:

memList(大写 L)应为 memlist(小写 L)。 【参考方案1】:

我写了一个小函数来列出成员和他们的年龄。

   class member:
       def __init__(self, name, age):
          self.name = name
          self.age = age


       def member_Info(self):
          memberInfo = f"Name: str(self.name)-->Age: str(self.age)"
          return memberInfo



    class Group:
       def __init__(self, name):
          self.name = name
          self.memlist = []


       def addMember(self, name):
          self.memlist.append(name)


       def getInfo(self):
           for i in range(len(self.memlist)):
               info = self.memlist[i].member_Info() + "\n"
               print(info)

这个all_members函数基本上是获取成员类中存储的信息并返回列表。我在 Group 中使用 memlist 进行打印,但没有成功,因此我使用 all_member 函数创建了一个新列表,并使用您用于在 group1.getInfo 的 memlist 中获取信息的代码从 group1 中的 memlist 获取信息。

    def all_members():
        all_mems = []
        for i in range(len(group1.memlist)):
             all_mems.append(group1.memlist[i].member_Info())
        print(all_mems)


    mem1 = member("Chi", "20")
    mem2 = member("Bach", "7")
    mem3 = member("Gen", "22")

    group1 = Group("Siblings")

    group1.addMember(mem1)
    group1.addMember(mem2)
    group1.addMember(mem3)

    print(group1.getInfo())
    print(mem2.member_Info() + "\n")
    print(all_members())

我想这不是您能得到的最佳答案,但我认为它会起作用,而且我在尝试纠正它时学到了很多东西,所以感谢您发布。

【讨论】:

【参考方案2】:

改变

print(group1.memList)

print(group1.memlist)

【讨论】:

以上是关于Python对象创建具有3个聚合关系成员的组的主要内容,如果未能解决你的问题,请参考以下文章

python 面向对象 进阶篇

python面向对象编程(下)

Python第八天

Python面向对象-类成员

mongodb 聚合 - 具有最后一个日期的组

Python之面向对象进阶