Python 覆盖1个实例而不是2个实例中的内存

Python 覆盖1个实例而不是2个实例中的内存,python,object,data-structures,instance,Python,Object,Data Structures,Instance,我试图为s1和s2创建两个实例,但内存被写入了两次。 我得到: 我创建了一个类,如下所示: class domain_monitor: name = ''; tasks = []; s1 = domain_monitor(); s1.name = "s1"; s1.tasks.append("Out of the World"); s2 = domain_monitor(); s2.name =

我试图为s1和s2创建两个实例,但内存被写入了两次。 我得到:

我创建了一个类,如下所示:

     class domain_monitor:
         name = '';
         tasks = [];
     s1 = domain_monitor();
     s1.name = "s1";
     s1.tasks.append("Out of the World");


     s2 = domain_monitor();
     s2.name = "s2";
     s2.tasks.append("Book: Decision Procedure");
我开始按如下方式填充实例:

     class domain_monitor:
         name = '';
         tasks = [];
     s1 = domain_monitor();
     s1.name = "s1";
     s1.tasks.append("Out of the World");


     s2 = domain_monitor();
     s2.name = "s2";
     s2.tasks.append("Book: Decision Procedure");
我按如下方式打印输出:

     for v in s1.tasks:   # 
       print v
     print " ========================================= "
     for v in s2.tasks:   # 
       print v

您必须将
\uuuu init\uuuu()方法添加到
域\u监视器
,否则所有实例将共享相同的
名称
任务

到目前为止你已经

s1.tasks is s2.tasks
>>>True
添加后:

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

所有实例都将具有单独的属性。

您必须将
\uuuuu init\uuuu()
方法添加到
域\u监视器
,否则所有实例将共享相同的
名称
任务

到目前为止你已经

s1.tasks is s2.tasks
>>>True
添加后:

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

所有实例都将具有单独的属性。

在您的
类中
定义
任务
是一个静态属性,这意味着它将在实例之间共享。您应该使用define a
\uuuu init\uuu
方法初始化对象属性。例如:

class domain_monitor:
    def __init__(self):
         self.name = ''
         self.tasks = []

顺便说一句,根据PEP8,类名必须在
CamelCase
中,因此
DomainMonitor
将是一个更好的选择。

类中
定义
任务
是一个静态属性,这意味着它将在实例之间共享。您应该使用define a
\uuuu init\uuu
方法初始化对象属性。例如:

class domain_monitor:
    def __init__(self):
         self.name = ''
         self.tasks = []
顺便说一下,根据PEP8,类名必须在
CamelCase
中,因此
DomainMonitor
将是一个更好的选择