【问题标题】:how to create objects with different names within a loop using python?如何使用python在循环中创建具有不同名称的对象?
【发布时间】:2013-10-20 22:31:52
【问题描述】:

要么该问题的答案有效,要么我读到您不需要实际命名它们......所以我尝试了这个:

class Entry():
    __slots__ = ('name', 'gender', 'occurances')

def mkEntry(name_foo, gender_foo, occurances_foo):
    myEntry = Entry
    myEntry.name = name_foo
    myEntry.gender = gender_foo
    myEntry.occurances = occurances_foo
    return myEntry

def topTwenty(fileName):
    file = open(fileName)
    topTwenty = []
    femaleCount = 0
    maleCount = 0
    for line in file:
        a = line.split(",")
        if a[1] == 'F' and femaleCount < 20:
            topTwenty.append(mkEntry(a[0], a[1], a[2]))
            femaleCount = femaleCount + 1
    print(topTwenty[7].name)

但是 print(topTwenty[7].name) 正在打印我对 topTwenty[20].name 的期望

有什么帮助吗?

【问题讨论】:

标签: python loops object


【解决方案1】:

您需要执行myEntry = Entry() 来创建该类的实例。现在你只是每次都覆盖同一个类的属性,并且每次都将同一个类附加到列表中。您的列表只包含 20 次相同的项目。

无论如何,这是一种奇怪的做事方式。为什么不将该代码从 mkEntry 移动到 Entry 类上的 __init__ 中,以使初始化与类保持一致。

【讨论】:

  • 谢谢。我正在使用 mkEntry,因为我正在学习 cs 入门课程,我们还没有学习 init,所以我们还不能使用它。
猜你喜欢
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
相关资源
最近更新 更多