python从对象中获取类名

Posted

技术标签:

【中文标题】python从对象中获取类名【英文标题】:python get class name from object 【发布时间】:2014-01-22 04:47:22 【问题描述】:

我正在尝试返回一个版本号,以及实现异常的方法。

由于我的任何类都可能出现异常,因此我试图从对象中获取类名。

问题是,我得到的是一个元组而不是一个字符串:

def version_control(*args):
    version = 1.0
    print args
    #Exception example:
    print str(args.__class__.__name__)
    if 'User' == args.__class__.__name__:
        version = 12.3

    return version

如何更改str(args.__class__.__name__),使其将类的名称作为字符串返回?

【问题讨论】:

不,您没有从args.__class__.__name__ 获得元组;别的东西是错的。为什么不改用if isinstance(args, User): 【参考方案1】:

我得到一个元组而不是一个字符串

不,您得到的是 字符串 "tuple" 而不是 其他字符串,因为 args 是一个参数元组。

当您致电version_control(obj, 1, 2)args == (obj, 1, 2) 时。你想查看args[0],在这个例子中是obj

【讨论】:

对不起,我第一次使用 args,我想我可以用 kwargs 更轻松地解决这个问题? @HansdeJong:为什么关键字参数可以解决问题?使用位置参数调用您的函数;只需索引args 元组。这个函数有多少种不同的调用方式? 我希望能够将我的任何对象(来自我的大多数类)放入其中,并且仅在传递异常列表中的对象时提供异常版本pastebin.com/NGDHTN68 这似乎工作正常 当然,但是由于您没有向我们展示如何调用函数,我们也无法帮助您了解传入的参数。 我的借口,对于 django、python 和 *** 来说还是很新的。下次我尝试更精确

以上是关于python从对象中获取类名的主要内容,如果未能解决你的问题,请参考以下文章

python获取函数名类名

python 动态获取当前运行的类名和函数名的方法

如何在获取之前更改托管对象类名称

从Method中获取完整类名和方法名

如何将完全限定的类名映射到 Python 中的类对象?

如何使用包含类名的字符串获取 Class 对象? [关闭]