繁体   English   中英

检查字符串是否是类型

[英]Check if string is type

我希望解析关键字 arguments 以确定它们是否还指代类型,例如以下情况:

from inspect import isclass
def convert(converting, **kwargs):
    for key, value in kwargs.items():
        if value and isclass(eval(key[1:])):
            return(eval(key[1:])(converting))
string = "Hello!"
print(convert(string, _list = True))

我很清楚eval对未知字符串有安全问题,这就是为什么我正在寻找一种更安全的方法来确定关键字名称的类型。

内置类型可以通过import builtins; isclass(getattr(builtins, 'str')) import builtins; isclass(getattr(builtins, 'str')) ,根据a_guest在此处的评论,但我仍然对如何检查其他类感到困惑。 也许isclass(getattr(globals(), key[1:]))

Python 通常使用 LEGB 查找名称。 由于您没有非本地人,您可以忽略E 您知道您没有本地名称,确实如此 所以等效的查找确实是对globals的调用。

如果您只关心键,则不需要字典。 这样,您可以显式传递简单的字符串,而无需玩带有额外字符的游戏:

def convert(converting, *names):
    for name in names:
        obj = globals.get(name, getattr(__builtin__, name, None))
        if isclass(obj):
            return obj(converting)
    return converting

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM