RuntimeError при использовании copy.deepcopy для получения QMenu.title () во вложенных словарях - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь скопировать словарь (из другого класса / файла) в переменную, используя copy.deepcopy, чтобы исходное содержимое словаря не было затронуто.

Изначально я использовал .copy(), которыйработает в моем случае, но оказывается, что это действительно повлияло на содержимое словаря, из которого я скопировал .. Обнаружил, что вместо этого следует использовать copy.deepcopy, но на этот раз я получаю еще одну ошибку - # RuntimeError: '__init__' method of object's base class (QMenu) not called.

Здесь я пытаюсь добиться того, чтобы преобразовать именование объектов QMenu (например, объект QtGui.QMenu в 0x7f142bd582d8) в удобочитаемую форму.

Это мой код:

names_copy = copy.deepcopy(self.database.menus)
# This will affects content in self.database.menus
# names_copy = self.database.menus.copy()

# self.database.menus is of the following:
# defaultdict(<type 'dict'>, {0: {<QtGui.QMenu object at 0x7f142bd582d8>: ['Jack', 'Peter']}})

new_names_copy = {}
for k1, v1 in self.names_copy:
    for k2, v2 in v1.items():

       # Errors at the following line:
       # RuntimeError: '__init__' method of object's base class (QMenu) not called.
        names_copy[k1][k2] = names_copy[k1][k2]

        # Remove the dict of the QMenu object naming
        names_copy[k1].pop(k2)

print names_copy
# Expected Output: {0: {'Names': ['Jack', 'Peter']}})

Большое спасибо заранее за любые ответы!

...