-1

我已经开始自学 python,虽然我知道 C# 和 Java,但 python 语言现在对我来说有点陌生。我想做一个小的电话簿程序。

我想制作一个名为电话簿的列表,其中列表中的每个成员都来自一个名为 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 的差距,并为简单的任务创建一个类。

4

2 回答 2

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.

于 2012-11-13T15:32:30.503 回答
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
于 2012-11-13T15:53:21.307 回答