在类的__init__函数的括号内划分的变量的范围是什么?

时间:2019-01-10 14:52:50

标签: python python-3.x oop scope

我正在用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属性实际上是适用于所有实例的全局变量,因此,如果我为一个实例重新定义它,则该变量将为每个实例更改。有谁知道为什么会这样?

感谢您的帮助,请告知我是否可以澄清

0 个答案:

没有答案