如何将具体类名称作为字符串?

use*_*305 102 python

我想避免调用很多isinstance()函数,所以我正在寻找一种方法来将实例变量的具体类名称作为字符串.

有任何想法吗?

Sil*_*ost 177

 instance.__class__.__name__
Run Code Online (Sandbox Code Playgroud)

例:

>>> class A():
    pass
>>> a = A()
>>> a.__class__.__name__
'A'
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢:`type(instance).__ name__` (50认同)
  • 对于A类,请使用以下命令:`A .__ name__` (22认同)
  • 如果你不想实例化该怎么办?你能得到班级的名字吗?(没有对象) (3认同)
  • 有没有办法通过导入路径获取它?例如,`str(type(foo)) == "<class 'never.gonna.give.youup'>"` 但是`type(foo).__name__ == "youup"`。我如何获得`never.gonna.give.youup`? (2认同)

Jav*_*ier 8

你也可以用类本身作为键创建一个dict,不一定是类名

typefunc={
    int:lambda x: x*2,
    str:lambda s:'(*(%s)*)'%s
}

def transform (param):
    print typefunc[type(param)](param)

transform (1)
>>> 2
transform ("hi")
>>> (*(hi)*)
Run Code Online (Sandbox Code Playgroud)

typefunc是一个映射每种类型函数的字典.transform获取该函数并将其应用于参数.

当然,使用'真正的'OOP会好得多