【问题标题】:How to get the variable name of a Python object class [duplicate]如何获取Python对象类的变量名[重复]
【发布时间】:2013-11-10 21:21:46
【问题描述】:

我想知道这是否可能/如何可能。

我有一个 Python 对象类:

class myClass(object):
    def __init__(self):
        ...do something

然后我创建该对象的一个​​实例:

myObjectClass = myClass()

myClass 中,是否可以将变量(myObjectClass)的“名称”作为字符串获取?

谢谢, 亚当

【问题讨论】:

  • 为什么需要这样做?
  • a_tuple = (myClass(), 1) 的输出应该是什么? some_instances = [myClass(), myClass(), myClass()] 呢?您所描述的甚至没有定义明确,因此不可能找到解决方案。即使你只想考虑identifier = myClass()这个简单的情况,那么a = b = myClass()呢?还是a = myClass(); b = a; del a?那么a = myClass(); a_list = [a]; del a 呢?您应该描述应该如何处理这些简单的情况。无论如何,它根本无法完成,而且根本没有用。顺便说一句:你成了XY problem 的受害者。
  • 在此处查看我的原始帖子:stackoverflow.com/a/59364138/5088165

标签: python class variables object


【解决方案1】:

不,这是不可能的,以任何合理的方式,并且多个变量可能指向同一个对象。就局部变量而言,这也是不可能的。无论您实际尝试解决什么问题,这都是错误的解决方法。

另外,整理一下你对objectinstanceclass的区别的理解。

【讨论】:

    【解决方案2】:

    这绝对不可能,除了一些骇人听闻的方式。

    为什么不给 init 添加一个name 参数,像这样:

    def __init__(self, name):
        self.name = name
    
    myObjectClass = myClass("myObjectClass")
    

    这就是我实际的做法..

    【讨论】:

    • 嗯,这对你有什么好处?我并不是说这是错误的做法——而是正确的做法来做可能是错误的事情。
    • 正如你所说,这是做错事的正确方法。很漂亮uselessstupid,不知道他做这种事的目的是什么。
    • self.nameself没有太大区别,后者不是名称,而是指针,足以寻址。还有什么名字?
    【解决方案3】:

    你可以这样做:

    obj = MyClass()
    
    the_globals = globals()
    for o in the_globals:
        if the_globals[o].__class__.__name__ == 'MyClass':
            print 'yay', o
    

    但你真的不想这样做。

    【讨论】:

    • 什么是obj 不是全局的?
    • @Marcin:那么代码需要调整。这只是显示可以做什么的假设。
    • 那就不行了。非全局名称没有解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多