【问题标题】:python get class name from objectpython从对象中获取类名
【发布时间】: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):

标签: python string classname args


【解决方案1】:

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

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

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

【讨论】:

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