Получил это упражнение на экзамене по питону.Попытка вернуть глубокую o копию списка следующим образом:
l = list()
l = [0,1,2]
l1 = l
l[0] = 1
l1 должен содержать [0,1,2]
, а не [1,1,2]
Упражнение, указанное для его реализации с использованием метакласса.
class deep(type):
def __new__(meta, classname, bases, classDict):
return type.__new__(meta, classname, bases, classDict)
def __init__(cls, name, bases, dct):
super(deep, cls).__init__(name, bases, dct)
def __call__(cls, *args, **kwds):
return type.__call__(cls, *args, **kwds)
class list(metaclass=deep):
def __init__(self):
pass
Насколько я знаю, '='
в python является оператором, а не оператором, и его нельзя переопределить.Любая идея о том, как вернуть глубокую копию при назначении?Я очень старался, но безуспешно.