Python中的追加列表

Python中的追加列表,python,list,oop,Python,List,Oop,我试图创建一个方法,允许类的每个实例彼此“相邻”。如果实体A将B添加为邻居,则B位于A的邻居列表中。但是,正如下面的输出所示,B会自动添加到B的邻居列表中,这不是所需的行为-B的邻居列表应该为空。有什么想法吗 输出: a's neighbor list element: b b's neighbor list element: b 代码: 将邻居列表设置为实例,而不是类、属性: class Entities(object): # not here def __init__(

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

输出:

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


邻居列表
设置为实例,而不是类、属性:

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

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

为什么对类属性进行变异意味着所有实例都可以看到这种变异会让你感到惊讶呢?@IgnacioVazquez Abrams:好吧,大概让他吃惊的是,
邻居列表
是类成员而不是实例成员,因为他假设Python的成员与Java完全一样。
class Entities(object):
    # not here
    def __init__(self, name):
        self.name = name
        self.neighbor_list = [] # here