我只是在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。在其中一個答案中也提到了名稱。 –