Сохранение имени экземпляра класса в строковой переменной - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть этот странный вопрос, который я застрял на несколько дней.Я разрабатываю небольшую программу с использованием Python для Maya.(Теперь я надеюсь, что вы знаете, что я не профессиональный программист. Просто сторонний кодер для создания внутренних скриптов и инструментов)

Инструмент, который я создаю, имеет много элементов пользовательского интерфейса, которые я создаю как классы,которые имеют свои собственные методы.

Что мне нужно сделать, это передать экземпляр такого класса, используя строку.Я знаю, что это странно, и, пожалуйста, позвольте мне объяснить.

Мне нужно реализовать операцию перетаскивания класса виджета, которая может передавать сообщение из источника в место назначения.сообщение всегда принудительно (майя) преобразуется в строку !!!

Class a(object):
    def __init__(self, v)
        self.v=v

instance=a("important")

обычно я могу сделать следующее:

print (instance.v)

, но происходит во время процесса обмена сообщениями, экземпляр преобразуется в текст, и вместо объекта python я получаю строку

'<<strong> main .a объект по адресу 0x000001BB0696CA90>'

которая является строкой.и я не могу запустить или запросить какие-либо методы в реальной функции ..

Я знаю, что это очень нуб.Пожалуйста, посоветуйте, как мне преобразовать экземпляр класса, сохраненный в строке, в объект python, чтобы я мог вызывать его методы или переменные запроса.

Еще раз спасибо.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Ну что же ... Пиклинг работал !!я просто хотел создать строку из экземпляра и использовать эту строку, чтобы снова сделать ссылку на экземпляр. !!спасибо, @kiran Baktha!

я только что сделал

beforetransfer = pickel.dumps(instance)

и в конце получения

aftertransfer = pickel.loads(beforetransfer)

спасибо сообществу !!вы, ребята, удивительны !!

0 голосов
/ 28 декабря 2018

Как насчет написания метода для вашего класса, который возвращает строку?

class A(object):
    def __init__(self, v):
        self.v = v

    def getV(self):
        return self.v

Результат:

>>> Instance = A('important')
>>> print(Instance.getV())
important
>>> Instance.getV()
'important'

Если это не сработает, возможно, вы могли бы написать printV()способ ...

...