在Python中附加列表

时间:2014-01-11 00:46:27

标签: python list oop

我正在尝试创建一个方法,允许类的每个实例成为彼此的“邻居”。如果实体A将B添加为邻居,则B位于A的 neighbor_list 中。但是,如下面的输出所示,B会自动添加到B的邻居列表中,这不是所需的行为 - B的邻居列表应为空。有什么想法吗?

输出:

 a's neighbor list element: b
 b's neighbor list element: b

代码:

 class Entities:
     neighbor_list = []
     name = ''

     def __init__(self,name):
         self.name = name

     def add (self, neighbor):
         self.neighbor_list.append(neighbor)  

 a = Entities ('a')
 b = Entities ('b')
 a.add(b)
 print "a's neighbor list element: %s" % a.neighbor_list[0].name
 print "b's neighbor list element: %s" % b.neighbor_list[0].name

1 个答案:

答案 0 :(得分:6)

neighbor_list成为实例,而不是类,属性:

class Entities(object):
    # not here
    def __init__(self, name):
        self.name = name
        self.neighbor_list = [] # here

在实例方法之外定义的类属性由类的所有实例共享。