Python 有没有办法将类对象名转换为与其关联的字符串?

Python 有没有办法将类对象名转换为与其关联的字符串?,python,class,Python,Class,因此,在我的程序中,某个函数(good_function())在引用对象(object_name)的属性(object_name.attribute)时需要使用对象的字符串名称(attribute_name)。此属性也是来自不同类的另一个对象。但是,当我拉出这个要使用的属性时,它会显示类对象名()而不是属性名(attribute_name)。电流输出和设置如下所示 class Class(): def __init__(self, attribute): pass cl

因此,在我的程序中,某个函数(good_function())在引用对象(object_name)的属性(object_name.attribute)时需要使用对象的字符串名称(attribute_name)。此属性也是来自不同类的另一个对象。但是,当我拉出这个要使用的属性时,它会显示类对象名()而不是属性名(attribute_name)。电流输出和设置如下所示

class Class():
    def __init__(self, attribute):
        pass

class Class2():
    pass

attribute_name = Class2()

object_name = Class(attribute_name)
object_name.attribute = attribute_name

def good_function(thing):
    #doesn't really matter
    pass

good_function(object_name.attribute)
print(object_name.attribute)

>>> <__main__.Class2 object at abcde12345>

如果我理解正确,那么我认为您想要的是不可能的,假设实际的引用属性只是一个本机类型

但是,如果您将属性设置为自己自定义类的实例,则任何实例都可以实现
\uuuu str\uuu
方法来显示您想要的任何内容:

class MyClass():
  def __str__(self):
     return 'MyClass str'


请回答您的问题并发布一个runnable来演示您的问题。另外,你真的在使用Python2.7吗?你可以通过
instance.\uuuu class\uuuu.\uuuu name.\uuuuu
type(instance).\uuuu name.\uuuu
@MattDMo从一个实例的实例中获取类名。我相信这些方法很好地再现了这个问题。是的,我指的是Python3.7,我想我弄错了。@martineau谢谢,这对以后的使用似乎很有帮助。我认为就像KaibutsuX说的那样,没有办法做到这一点。感谢您的贡献。感谢您的回答和解决方案,我非常感谢!
object_name.attribute = 'attribute_name'

def magic_function(object):
    #solve for here
    return object

def good_function(thing):
    #doesn't really matter
    pass

variable = magic_function(object_name.attribute)

good_function(variable)

print(variable)
     
    >>> attribute_name
class MyClass():
  def __str__(self):
     return 'MyClass str'