type(cmd.__name__, cmd.__bases__, dict(cmd.__dict__))
type(SomeClass.__name__, SomeClass.__bases__, dict(SomeClass.__dict__))
import copy
class Command(object):
def __init__(self):
self.name = ""
command = Command()
commands = {}
command_name = 'test'
commands[command_name] = copy.deepcopy(command)
commands[command_name].name = command_name
print(command.name, commands[command_name].name) # ('', 'test')
print(command.name == commands[command_name].name) # False
run_args это это ж словарь
поэтому при копировании __dict__
dict(SomeClass.__dict__)
вы получаете чото типа такого
{'__dict__': , '__module__': '__main__', '__weakref__': , 'run_args': {}, '__doc__': None}
где run_args ссылка на тот же словарь предка!
поэтмоу если мы сделаем deepcopy для __dict__ то пролема пропадет
пример 1
пример 2
то есть классы реально разные у вас
но ссылаются сука на один и тот же словарик внутри
поэтому копировать сам __dict__ оригинала нужно через deepcopy