我正在自学Python(2.7,没有以前的编码经验),我刚刚开始处理类和OOP概念。作为练习,我试着编写一个非常简单的地址簿。我想我已经理解了类和实例的基础知识,但是我发现现在很难掌握的是如何进一步开发抽象层次。你知道吗
为了更好地解释,假设我有这个,这通常是许多教程用来介绍类的基本示例:
class Contact(object):
def __init__(self, name, surname, phone):
self.name = name
self.surname = surname
self.phone = phone
contact1 = Contact('Mark', 'Doe', '123456789')
contact2 = Contact('Sally', 'Preston', '456789123')
到目前为止还不错,我可以使用contact1.attribute或其他方法做很多其他有趣的事情。没问题。你知道吗
我无法理解的是:
问题1:
我不知道我会有多少联系人。如果我不知道我将拥有多少联系人,我如何创建一个方法,比如create\u contact(),使我创建一个新联系人并将其存储在list/dict中?我怎么称呼它?我不知道如何创建一个新实例,而不必硬编码它的名称,如“contact1”等。如何使带有“contact1”和“contact2”的行成为一个动态的东西?你知道吗
我试着用一个列表作为类变量来解决这个问题。类似于(假设“contact\u list”已经作为类变量存在):
Contact.contact_list.append(Contact('Mark', 'Doe','123456789')) # obviously I'd use raw_input instead of 'Mark' etc, but I avoided it here for readability
但我最终得到了一个无名物品的清单,我的大脑很难处理它。我可以用列表索引访问它们,但我不确定我在这里走的是对的。。。任何帮助都将不胜感激。你知道吗
问题2:(有些相关,以便更好地理解问题)
如果在python CLI中输入如下内容(假设定义类的前一个块已经运行):
>>> Contact('Bob', 'Stevens', '32165497')
我的理解是Contact()的一个实例确实会被创建,并带有这些属性。。。但它没有名字。如何访问它?(我怎么知道它的存在?有没有办法列出与某个类相关的所有现有实例?)你知道吗
我希望我说得有道理。事先谢谢你的帮助。你知道吗
第一季度: 可以创建另一个用作数据库的类
将“无名”实例存储在集合中并没有什么错,但我同意,一开始很难理解。;)您不需要知道要创建多少联系人,因为Python集合类型都是动态的,所以不需要预先指定大小,它们会增长以容纳您提供给它们的数据。你知道吗
下面是一个演示,它使用Contact类在列表字典中创建一个简单的电话簿。我们将每个联系人都保存在名字和姓氏下,这样我们就可以按任何一个名字查找联系人。字典的值是列表,因此我们可以处理多个同名的人。你知道吗
我向
Contact
添加了一个__repr__
方法,以便于显示Contact
实例的内容。你知道吗输出
另一个选项是使
phonebook
成为Contact
的类属性。你知道吗当然,要使这个程序真正有用,我们需要能够将电话簿保存到磁盘,并将其重新加载。有多种方法可以做到这一点,例如将数据保存到CSV或JSON文件或^{} 文件中。但这些是另一个问题的主题。;)
相关问题 更多 >
编程相关推荐