consider this code fragment:

    from configman import Namespace, RequiredConfig
    class A(RequiredConfig):
        required_config = Namespace()
        required_config.namespace('c')
        required_config.c.add_option('a', default=18)
     class B(A):
        pass
    assert B.required_config.c.a is A.required_config.c.a
    B.required_config.c.a.default = 333
    assert A.required_config.c.a.default == 333

This code produces no output.  I believe that means that you are changing the crontabber.app.CronTabber class.  However, since there is only one instance of that object, it hardly matters.  If you really want to not change the base class required_config, you can overshadow them:

    class C(A):  # hide the base class namespace & option with new ones
        required_config = Namespace()
        required_config.namespace('c')
        required_config.c.add_option('a', default=18)
    assert C.required_config.c.a is not A.required_config.c.a

or if you don't want to have to know what A defined:

    class D(A):  # another way to hide the base class namespace & option
        required_config = A.required_config.safe_copy()
    assert D.required_config.c.a is not A.required_config.c.a
    assert D.get_required_config().c.a is not A.get_required_config().c.a