初学者关于OOP和持久性的概念性问题

时间:2011-01-01 21:40:54

标签: oop persistence

这是关于OOP的一个非常基本的问题(我使用的是python,但实际上这是一个概念性的问题,所以不是特定的语言)。我环顾四周,但没有教程或书籍涵盖这个具体问题。如果我不清楚,我道歉,并乐意澄清我写的任何内容。

假设我正在创建一个简单的地址簿,我想用pickle写入磁盘。我有一个名为Contact的类,其中__init__接受一些args(firstName和lastName),我有一个菜单,您可以在其中创建联系人,编辑它们等。对于OOP的所有示例,我看到他们会做点什么......

bob = Contact('Bob', 'Smith') 
jane = Contact('Jane', 'Smith')

...创建新的联系实例。但这些都是在运行时之前定义的。当我想通过用户输入动态创建所有这些实例时会发生什么?我是否为每个人创建新实例?我如何从用户输入中执行此操作?然后只需将所有实例写入列表并腌制它?或者你做的事情......

firstName, lastName = raw_input("Enter first name: "), raw_input("Enter last name: ")    
contact = Contact(firstName, lastName)

...然后只需将联系人附加到列表中,并在每次要添加用户时获取联系人实例的新值?这是一个我没有真正得到的关键概念(因为我没有看到它在任何地方解释过)。我见过的所有示例都不会执行上述操作,而是为每个事物/人创建新实例,但所有实例都是预先定义的,而不是动态创建的。我真的很感激有人向我解释这个概念。

2 个答案:

答案 0 :(得分:3)

你的例子正是如何运作的。

答案 1 :(得分:1)

是的,通常你是这样做的 - 制作对象的数组。或者其他一些集合,具体取决于您的语言和/或框架。创建新对象时,首先在临时变量中创建它,然后将其插入到集合中。

有时,当您拥有大量对象时,不会从持久存储(如数据库或文件)中一次性加载它们。您只需加载需要使用的一个(或几个)。如果只加载一个,它可能会得到一个特殊的变量。有几个人会再次收集一个集合。