我正在用Python 3开发一个面向对象的Text Adventure Engine。每个位置,人或物品都存储为一个对象的实例,并且每种类型都有各自的类,具有不同的参数。
在这些类之一中,我将在 init 函数中创建一个变量,并将其默认设置为空列表。
class Event(object):
def __init__(self, list_var = []):
self.list_var = list_var
此对象之后,有一个函数可以通过在列表中添加/删除项目来更改self.question_var列表中的值。
我的问题来自以下代码:
event_one = Event() #I create an instance of this class
event_one.edit_list("Hello") #I edit the list_var attribute of this instance through some function
event_two = Event() #The list_var attribute of this object starts out with "Hello in it"
问题是我希望list_var属性对于每个实例都是唯一的,这意味着如果我为一个实例编辑它,则不会为另一个实例编辑变量。根据我的理解,通常这就是 init 函数中定义的变量的工作方式。我想知道这是否是某种范围问题,其中list_var属性实际上是适用于所有实例的全局变量,因此,如果我为一个实例重新定义它,则该变量将为每个实例更改。有谁知道为什么会这样?
感谢您的帮助,请告知我是否可以澄清