Correcta forma de lidiar con argumentos opcionales en argparse

Tengo el siguiente snippet para manejar argumentos de un script

...
args_parser = argparse.ArgumentParser(description='...')
args_parser.add_argument('--topic', action='append')
args_parser.add_argument('--show-topics')
args_parser.parse_args()

if args_parser.topic is not None:
    print(args_parser.topic)
...

Pero si lo ejecuto sin el parametro, obtengo una excepcion

Traceback (most recent call last):
  File "springer_book_scraper.py", line 30, in <module>
    if args_parser.topic is not None:
AttributeError: 'ArgumentParser' object has no attribute 'topic'

Entiendo que con try…except lo manejo, pero, esa es la forma correcta? hay alguna manera que me proporcione el propio argparse?

Esta armando mal el parser, me falto asignarlo en la linea del parse_args.

El siguiente código si funciona bien

args_parser = argparse.ArgumentParser(description='description')
args_parser.add_argument('--topic', action='append', type=str)
args_parser.add_argument('--show-topics')
args = args_parser.parse_args()

if args.topic is not None:
    print(args.topic)