YardalGedal
@YardalGedal
yeah boy

Почему не работает deepcopy?

command = tools.get_attr_recursive(scripts, command_class_name) 
# command.name по умолчанию пуст
# print(command.name)
# ""
self.commands[command_name] = copy.deepcopy(command)
self.commands[command_name].name = command_name
print(command.name, self.commands[command_name].name)
# command.name == self.commands[command_name].name
# True
  • Вопрос задан
  • 469 просмотров
Решения вопроса 1
@Stqs
senior software developer
кароче тема такая
import copy


class Command(object):
    name = ""


cmd = Command
cmd2 = copy.deepcopy(Command)
assert cmd == cmd2

копирование действительно ничего не дает, потому что как написано здесь copy и deepcopy занимаются копированием объектов
в нашем случае экземпляров действительно нет

что вы хотите сделать - это создать класс с похожим поведением но немного отличный
есть вариант унаследоваться и переопределить нужные части
либо можно собрать класс вручную переиспользовав кишки от оригинального класса
class Command(object):
    name = ""

cmd = Command
cmd3 = type('NewCommand', Command.__bases__, dict(Command.__dict__))
assert cmd == cmd3  # AssertionError
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы