我只是在20年的差距后重新开始编程。我认为Python看起来相当直接和强大,所以我完成了在线课程和一些阅读。Python面向对象的设计概念
我现在正在看一些简单的项目,以熟悉该语言。其中一个挑战就是让我的头脑围绕着面向对象的编程,而当我最后编写一个程序时,它并不在我身边。
我的第一个项目是读取包含股票投资组合信息的数据文件,对每个项目进行一些计算并打印报告。我有这个工作。
所以现在我正在寻找更高级的东西,阅读数据并存储它,然后使用数据为互动问题提供答案。我的问题是如何存储数据,以便可以轻松访问。
我首先想到的是让一个列表的列表,如
companies = [ ['AMP', 1000, 2.50], ['ANZ', 2000, 17.00], ['BHP', 500, 54.30] ]
这可以在循环很轻松地访问,但是访问方法都算不上友好 - 数字作为指标而不是名称:
companyqty = companies[1][1]
或者for循环:
for company in companies:
if company[0] == 'BHP':
companyqty = company[1]
然后我想到了一本字典,与价值列表:
companies = {'AMP':[1000, 2.50], 'ANZ':[2000, 17.00], 'BHP':[500, 54.30] }
companyqty = companies['BHP'][0]
这提供了即时访问任何给定的公司,但仍然坚持与数字指标。
所以我想知道如何以面向对象的方式来构造这个结构,以便能够保存公司列表和所有关联的数据,并且能够方便地访问这些值。到目前为止,我所有的想法都像上面的列表或字典一样。或者这种问题不是真的适合面向对象的方法吗?
感谢
我想我真正的意思是以最小化错误可能性的方式访问,特别是使用数字引用字段(例如Companies [1] [1])。在我的第一个练习中,我多次出手。我想我仍然在考虑从1开始而不是从0开始的索引。通过使用名称,我避免了这种情况。 –
是的,我甚至没有考虑过使用数字键,因为使用键或属性会使格式携带它的上下文。如果出于某种外部原因必须使用列表或元组中的位置,则可以为位置定义名称,例如,公司[0] [COMPANY_PRICE。在其中一个答案中也提到了名称。 –