Получил это упражнение на экзамене по питону. Попытка вернуть глубокую копию списка вроде этого:
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 является оператором, а не оператором, и его нельзя переопределить. Есть идеи, как вернуть полную копию при назначении? Пытался довольно много, но безуспешно.