Обеспечьте глубокую копию при наследовании изменяемого атрибута класса (например, списка).Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обеспечьте глубокую копию при наследовании изменяемого атрибута класса (например, списка).

Сообщение Anonymous »

Наследование атрибута класса от суперкласса и последующее изменение значения для подкласса работает нормально:

Код: Выделить всё

class Unit(object):
value = 10

class Archer(Unit):
pass

print Unit.value
print Archer.value

Archer.value = 5

print Unit.value
print Archer.value
приводит к выводу:

10

10

10

5

и это нормально: Арчер наследует значение от Unit, но когда я меняю значение Archer, значение Unit остается нетронутым.
Теперь, если унаследовано значение представляет собой список, эффект мелкого копирования забастовки, и это также влияет на значение суперкласса:

Код: Выделить всё

class Unit(object):
listvalue = [10]

class Archer(Unit):
pass

print Unit.listvalue
print Archer.listvalue

Archer.listvalue[0] = 5

print Unit.listvalue
print Archer.listvalue
Выход:

10

10

5

5< /p>
Есть ли способ «глубокого копирования» списка при наследовании его от суперкласса?

Подробнее здесь: https://stackoverflow.com/questions/248 ... e-e-g-list
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»