开发者社区> 问答> 正文

如何在函数中打印变量类类型的实际名称?

我正在尝试返回变量名称,但我一直这样:

<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 ))

展开
收起
游客6qcs5bpxssri2 2019-09-08 21:54:26 754 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    有不同的方法来解决您的问题。

    我能理解的最简单的方法是,如果你可以更改类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"
    
    2019-09-08 21:54:44
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载