代码之家  ›  专栏  ›  技术社区  ›  bluesummers

不区分大小写的getattr

  •  1
  • bluesummers  · 技术社区  · 6 年前

    给定一个模块,我希望能够在该模块中搜索不区分大小写的类。

    utils/helpers.py

    class UtilityClass:
        def __init__(self):
            ...
    

    在另一个脚本中,我希望能够以不区分大小写的方式通过类的名称检索该类

    import utils.helpers as util_helpers
    
    module = getattr(util_helpers, 'utilityclass')
    

    1 回复  |  直到 6 年前
        1
  •  3
  •   blhsing    6 年前

    您可以覆盖 builtins.getattr 对于不区分大小写的版本:

    import builtins
    import pprint
    def igetattr(obj, attr):
        for a in dir(obj):
            if a.lower() == attr.lower():
                return orig_getattr(obj, a)
    orig_getattr = builtins.getattr
    builtins.getattr = igetattr
    print(getattr(pprint, 'prettyprinter'))
    

    <class 'pprint.PrettyPrinter'>