Dav*_*d M 5 python object-oriented-analysis
隔了20年之后,我才回到编程领域。我认为Python看上去相当简单和强大,因此我完成了在线课程和阅读。
我现在正在看一些简单的项目来熟悉这种语言。挑战之一是使我的注意力转向面向对象的编程,而上次编写程序时并没有。
我的第一个项目是读取一个数据文件,其中包含有关股票投资组合的信息,对每个投资组合进行一些计算,然后打印报告。我有这个工作。
因此,现在我正在研究更高级的内容,读取并存储数据,然后使用数据提供交互式问题的答案。我的问题是如何存储数据以便可以轻松访问。
我首先想到的是列出清单,例如
companies = [ ['AMP', 1000, 2.50], ['ANZ', 2000, 17.00], ['BHP', 500, 54.30] ]
Run Code Online (Sandbox Code Playgroud)
可以很容易地在循环中进行访问,但是访问方法并不完全友好-数字作为索引而不是名称:
companyqty = companies[1][1]
Run Code Online (Sandbox Code Playgroud)
或循环:
for company in companies:
if company[0] == 'BHP':
companyqty = company[1]
Run Code Online (Sandbox Code Playgroud)
然后我想到了一个字典,其值是一个列表:
companies = {'AMP':[1000, 2.50], 'ANZ':[2000, 17.00], 'BHP':[500, 54.30] }
companyqty = companies['BHP'][0]
Run Code Online (Sandbox Code Playgroud)
这样可以立即访问任何给定的公司,但是仍然停留在数字索引上。
因此,我想知道如何以一种面向对象的方式来构造它,以便能够保存公司列表和所有相关数据,并能够方便地访问这些值。到目前为止,我所有的想法都像上面的清单或字典一样。
还是这种问题真的不适合面向对象的方法?
谢谢
对于 OOP 方法来说,这是一个很好的问题。例如,您可以为特定投资组合股票创建一个类,该类具有公司名称、股票数量和股价等属性。您可以为其提供有用的功能,例如getValue. 这是一个示例实现:
class Holding:
def __init__(self, companyName, numShares, sharePrice):
self.companyName = companyName
self.numShares = numShares
self.sharePrice = sharePrice
def getValue(self):
return self.numShares * self.sharePrice
portfolio = {'AMP':Holding('AMP', 1000, 2.5), 'ANZ':Holding('ANZ', 2000, 17.0), 'BHP':Holding('BHP', 500, 54.30)}
print portfolio['BHP'].sharePrice
# 54.3
print portfolio['AMP'].getValue()
# 2500.0
Run Code Online (Sandbox Code Playgroud)
您可以通过属性名称访问您的馆藏属性。您可以将其提升到一个新的水平,并为投资组合编写一个类,该类可以具有“holdingList”和“经纪人名称”等属性,以及“getTotalValue”等函数。
| 归档时间: |
|
| 查看次数: |
2898 次 |
| 最近记录: |