2017-04-05 32 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

太棒了!我建议读一些关于面向对象编程的知识,以便熟悉继承以及对象和其他非原始值如何存储在内存中,此外,您还可以遇到其他有用的东西,以了解像多态和封装以及将来需要开发任何一种可用系统的所有其他花哨话语。祝你好运! –

相关问题