我正在尝试返回变量名称,但我一直这样:
<classes.man.man object at (some numbers (as example:0x03BDCA50))>
以下是我的代码:
from classes.man import man
def competition(guy1, guy2, counter1=0, counter2=0): ....................... some ok manipulations ....................... if counter1>counter2: return guy1
bob = man(172, 'green') bib = man(190, 'brown') print(competition(bob , bib ))
有不同的方法来解决您的问题。
我能理解的最简单的方法是,如果你可以更改类man,让它接受一个可选的名称并将其__init__存储在实例中。这应该是这样的:
class man: def init(number, color, name="John Doe"): self.name = name # rest of your code here 在你的功能中你可以这样做:
return guy1.name
另外,如果你想要额外的步骤,你可以__str__在你的类中定义一个方法,man这样当你将它传递给str()或时print(),它会显示名称:
# Inside class man
def __str__(self):
return self.name
那样你的功能可以做到:
return guy1
当您打印函数的返回值时,它实际上会打印出名称。
如果你不能改变课程man,这是一个非常复杂和昂贵的建议,根据具体情况可能会破坏:
import inspect
def competition(guy1, guy2, counter1=0, counter2=0):
guy1_name = ""
guy2_name = ""
for name, value in inspect.stack()
[-1].frame.f_locals.items():
if value is guy1:
guy1_name = name
elif value is guy2:
guy2_name = name
if counter1 > counter2:
return guy1_name
elif counter2 > counter2:
return guy1_name
else:
return "Noone"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。