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