Предположим, у нас есть следующий фрагмент кода:
# код Python для демонстрации
# работа обмена
Количество переменных данных
# Создать класс
class
Geek_Class:
geek
=
[]
x
=
Geek_Class ()
y
=
Geek_Class ()
# Перед добавлением значений ‚Äã‚Äã
x.geek.append (
1
)
y.geek.append(
2
)
x.geek.append(
3
)
y.geek.append (
4
)
# Вывести значения ‚Äã‚Äãдля x и y
print
(x.geek)
печать
(y.geek)
Выход:
[1, 2, 3, 4] [1, 2, 3, 4]
Выводит [1, 2, 3, 4] вместо x и [1, 2, 3, 4]. ] для тебя. Предположим, мы хотим получить [1, 3] для x и [2, 4] для y. Мы можем получить желаемый результат следующими способами:
Способ №1 : объявление их внутри __init__
Объявление переменных внутри объявление класса делает их членов класса, а не членов экземпляра. Объявление их внутри метода __init__
гарантирует, что новый экземпляр элемента будет создан вместе с каждым новым экземпляром объекта, что нам и нужно.
# код Python для демонстрации
# работа по обмену
Количество переменных данных
# Создайте класс внутри __init__
class
Geek_Class:
def
__ init __ (
self
):
self
. Компьютерщик
=
[]
x
=
Geek_Class ()
y
=
Geek_Class ()
# Добавление значений ‚Äã‚Äã
x.geek.append (
1
)
y.geek.append (
2
)
x.geek.append (
3
)
y.geek.append (
4
)
# Вывести значения ‚Äã‚Äãдля x и y
print
(x.geek)
print
(y.geek)
Выход:
[1, 3] [2, 4 ]
В исходном коде атрибуту списка после создания экземпляра не присваивается никакого значения; поэтому он остается атрибутом класса. Определение списка внутри __init__
работает, потому что __init__
вызывается после создания экземпляра.
Способ № 2: путем создания нового списка и сохраните в нем значения.
# Демонстрационный код Python
# работа обмена
Количество переменных данных
# Создать класс
class
Geek_Class:
гик
=
[]
x
=
Geek_Class ()
y
=
Geek_Class ()
# Создать новые списки
x.geek
=
[]
y.geek
=
[]
# Добавление значений ‚Äã‚Äã
x.geek.append (
1
)
y.geek.append (
2
)
x.geek.append (
3
)
y.geek.append (
4
)
# Вывести значения ‚Äã‚Äãдля x и y
print
(x.geek)
печать
(y.geek)
Выход:
[1, 3] [2, 4]