在python中创建一个类列表

时间:2012-11-13 15:28:47

标签: python list class

我已经开始自学python了,虽然我知道C#和Java,python语言现在对我来说有点奇怪。我想制作一个小电话簿程序。

我想创建一个名为phonebook的列表,其中列表中的每个成员来自一个名为entery的类,在每个entery中有几个字符串和一个电话号码字符串列表。例如:

class entery:
    def addEntery (str1,str2,list):
        tmp = entery()
        tmp.str1 = str1
        tmp.str2 = str2
        tmp.list = list

def main():
    phonebook = []
    phonebook.append(addEntery('ian1','ian2',list)

我需要帮助缩小我从C#到python的差距,并为简单任务创建一个类。

2 个答案:

答案 0 :(得分:3)

你没有定义一个合适的构造函数。它应该是:

class Entery(object):
  def __init__(self, str1, str2, str3):
    self.str1 = str1
    self.str2 = str2
    self.str3 = str3

由于Python没有“私有”数据,您可以直接从“外部”访问这些字段:

>>> test = Entery("a", "b", "c")
>>> print test.str1
a

然后,您可以通过调用构造函数来构建实例

来构建列表
phonebook.append(Entery("one", "two", "three"))
phonebook.append(Entery("four", "five", "six"))

这非常重要:phonebook是一个实例列表,即一个对象列表,而不是一个“类列表”。当然也可以将类放在列表中,但这不是你想要的。

您可能应该更多地关注阅读一些基本的Python类教程。此外,在命名类时,您正在寻找的单词可能是Entry

答案 1 :(得分:0)

您在append方法上缺少一个结束括号,它将是错误的来源。此外,属于python中的类的所有函数都需要在函数签名中引用self,您还可以将类缩小为简单的构造函数。

class Entery:
    def __init__(self, str1, str2, str3):
        self.str1 = str1
        self.str2 = str2
        self.str3 = str3

phonebook = []
phonebook.append(Entery('ian1','ian2',list))
print phonebook[0].str1