Python 覆盖1个实例而不是2个实例中的内存
我试图为s1和s2创建两个实例,但内存被写入了两次。 我得到: 我创建了一个类,如下所示: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 =
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
将是一个更好的选择