我已经开始自学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的差距,并为简单任务创建一个类。
答案 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