class 中的可变变量

Mutable variable in a class

如果我有一个这样的class。

class Person():

def __init__(self, name):
    self._name = name
    self._name_list = []
    if(self._name not in self._name_list):
        self._name_list.append(self._name)
father = Person("Michael")
mother = Person("Sharon")
>>>self._name_list

["Michael", "Sharon"]

如何在不创建全局变量的情况下执行此操作?每次我实例化一个新人时,它都会创建自己的列表。但是我需要一个在 class 范围内的列表,每次创建新人时都会附加一个名称。

您可以将其保存在 class 本身中,如下所示:

class Person():
    _name_list = []

    def __init__(self, name):
        self._name = name
        if self._name not in self._name_list:
            self._name_list.append(self._name)

father = Person("Michael")
mother = Person("Sharon")

print(Person._name_list)

输出:

['Michael', 'Sharon']

你可以试试这个:

people = []
class Person():
   def __init__(self, name):
       self._name = name
       if self._name not in people:
           global people
           people.append(self._name)

person = Person('name1')
person1 = Person('name2')
print(people)

输出:

['name1', 'name2']