Python: subscript a module

前端 未结 1 1036
盖世英雄少女心
盖世英雄少女心 2020-12-12 03:18

I was trying to do something like this:

module.py

def __getitem__(item):
    return str(ite         


        
相关标签:
1条回答
  • 2020-12-12 03:40
    >>> class ModModule(object):
        def __init__(self, globals):
            self.__dict__ = globals
            import sys
            sys.modules[self.__name__] = self
        def __getitem__(self, name):
            return self.__dict__[name]
    
    
    >>> m = ModModule({'__name__':'Mod', 'a':3})
    >>> import Mod
    >>> Mod['a']
    3
    
    # subclassing the actual type won't work
    >>> class ModModule(types.ModuleType):
        def __init__(self, globals):
            self.__dict__ = globals
            import sys
            sys.modules[self.__name__] = self
        def __getitem__(self, name):
            return self.__dict__[name]
    
    
    >>> m = ModModule({'__name__':'Mod', 'a':3})
    
    Traceback (most recent call last):
      File "<pyshell#114>", line 1, in <module>
        m = ModModule({'__name__':'Mod', 'a':3})
      File "<pyshell#113>", line 3, in __init__
        self.__dict__ = globals
    TypeError: readonly attribute
    

    you may use ModModule(globals()) to replace the current module in sys.

    0 讨论(0)
提交回复
热议问题