Environment and Config
The following simple config describes my normal Environment setting:
from argparse import Namespace
import argparse
class AttrDict(Namespace):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
    def __getattribute__(self, name: str):
        try:
            return super().__getattribute__(name)
        except AttributeError:
            return None
    def __getitem__(self, key):
        return self.__getattribute__(key)
x = argparse.ArgumentParser()
x.add_argument("--x", default = 2)
x.add_argument('--y', default = 3)
args = x.parse_args()
name = AttrDict(**vars(args))
print(name)
print(name.x) # valid
print(name['x']) # valid
print(name['y']) # valid