2017-04-05 62 views
0

我試圖創建一個類用於存儲有關用戶的某些屬性的用戶,以及具有對象列表的另一個類User_Review /由類User創建的實例。Python 2.7如何從存儲在不同類中的列表中訪問由一個類創建的對象

class User(object): 
    user_objects = [] 
    def __init__(self, name, age) 
     self.name = name 
     self.age = age 
     User.user_objects.append(self) 

class User_Review(User): 
    user_list = # here is where I want user_objects to exist 

user1 = User('leila', 23) 
user2 = User('carter', 43) 

# so user_list = [user1, user2] 

要回答zondo和juanpa.arrivillaga,用戶的目的是建立基本的信息對象,User_Review是我希望能夠做的事情與用戶通過其他列表的方法User_Review類中的方法,例如將用戶添加/刪除到用戶列表末尾的方法,或者顯示某些信息(例如,僅限名稱)。

+1

你可以做'user_list = User.user_objects',但爲什麼你想要兩個引用同一個東西? – zondo

+0

爲什麼'User_Review'從'User'派生?爲什麼要使用自定義類,而不僅僅是使用'list'? –

回答

0

你的目的,我認爲你可以代替類中創建兩個user_objectsuser_list名單,只是保留內User_Review的一個(因爲你希望自己的引用存儲在另一個類),並擺脫一個在User之內,同時將創建的User對象從__init__方法中添加到user_list而不是user_objects

實際上,這看起來像下面這樣。

class User(object): 
    def __init__(self, name, age): 
     self.name = name 
     self.age = age 
     User_Review.user_list.append(self) 

class User_Review(object): 
    user_list = [] 

user1 = User('leila', 23) 
user2 = User('carter', 43) 

打印出使用print(User_Review.user_list[0].name)正確輸出carter第一用戶的名稱。


這種做法,但是,似乎相當直覺:

  • User_Review類繼承User這對我來說沒有任何邏輯意義的,因爲你不會希望有一個方法,如change_ageUser_Review如果碰巧在User執行。但是,您希望能夠訪問每個User對象內的數據,只需訪問列表中所需的User即可完成。

  • 就目前而言,User_Review沒有真正的目的,完全相同的事情可以通過一個常規列表來實現;然而,如果有計劃實施依賴來自多個或所有User對象的數據的方法,那麼這可能是一個可行的解決方案。

對這個問題的其他解決方案可以只創建列表中User類中,並且只使用User_Review訪問列表,並做必要的行動。或者更復雜地創建一個從這兩個專門用於存儲,組織和檢索數據庫中的用戶的單獨的類。

+0

謝謝您的明確解釋!我對這兩個類如何相互關聯有了更好的理解,現在認識到'User_Review'不需要繼承'User',這使得事情變得更簡單。 –

+0

太棒了!我建議讀一些關於面向對象編程的知識,以便熟悉繼承以及對象和其他非原始值如何存儲在內存中,此外,您還可以遇到其他有用的東西,以瞭解像多態和封裝以及將來需要開發任何一種可用系統的所有其他花哨話語。祝你好運! –

相關問題