将类的实例名称保存在字符串变量中

时间:2018-12-28 19:27:06

标签: python maya

我有一个奇怪的问题,我坚持了好几天。我正在使用python for maya开发一个小程序。 (现在,我希望您知道我不是一个专业的程序员。只是用来构建一些内部脚本和工具的辅助编码器)

我正在构建的工具具有许多我作为类创建的UI元素,它们具有自己的方法。

我需要做的是使用字符串传递此类的实例。我知道这很奇怪,请允许我解释一下。

我需要实现小部件类的拖放操作,该操作可以将消息从源传递到目标。消息总是被(玛雅人)强行转换成字符串!!!

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

instance=a("important")

通常我可以做的是

print (instance.v)

但是发生的是在消息交换过程中,实例被转换为文本,我得到了一个字符串而不是python对象

  

'<< strong>主要。位于0x000001BB0696CA90>的对象

是一个字符串。而且我无法运行或查询实际函数中的任何方法。

我知道这是非常菜鸟。请提供有关如何将字符串中保存的类实例转换为python对象的建议,以便我可以调用其方法或查询变量。

再次感谢。

2 个答案:

答案 0 :(得分:0)

如何为您的类编写一个返回字符串的方法?

Caused by android.view.InflateException: Binary XML file line #11: Error inflating class ImageView
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
   at com.company.auth.home.AuthHomeFragment.onCreateView(AuthHomeFragment.kt:71)
   at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2440)
   at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:885)
   at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1229)

Caused by android.content.res.Resources$NotFoundException: Resource ID #0x7f0801f1
   at android.content.res.Resources.getValue(Resources.java:1266)
   at androidx.appcompat.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:331)
   at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:198)
   at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191)
   at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102)
   at androidx.appcompat.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:59)
   at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:78)
   at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
   at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:182)
   at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
   at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
   at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
   at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:180)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
   at com.company.auth.home.AuthHomeFragment.onCreateView(AuthHomeFragment.kt:71)
   at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2440)

结果:

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' 方法...

答案 1 :(得分:0)

好吧..酸洗工作!!我只是想从实例创建一个字符串,然后使用该字符串再次引用该实例。谢谢,@ kiran Baktha!

我刚刚做了

beforetransfer = pickel.dumps(instance)

在接收端

aftertransfer = pickel.loads(beforetransfer)

感谢社区!!你们都很棒!