Skip to content
Advertisement

How to put a variable into Python docstring

So I’m trying to create a “dynamic” docstring which is something like this:

JavaScript

to basically let the docstring for @param animalType show whatever ANIMAL_TYPES has; so that when this variable is updated, the docstring will be updated automatically.

Unfortunately, it doesn’t seem to work. Does anyone know if there is a way of achieving this?

Advertisement

Answer

Triple-quoted strings are one big string. Nothing is evaluated inside them. The % part is all part of the string. You’d need to have it operating on the actual string.

JavaScript

I’m not certain this will work properly, though; docstrings are a bit magic. This will not work; the docstring is evaluated at compile time (as the first statement in the function, given it is a string literal—once it’s got the % in it it’s not just a string literal), string formatting takes place at runtime, so __doc__ will be empty:

JavaScript

If you wanted to work this way, you’d need to do func.__doc__ %= {'ANIMAL_TYPES': ANIMAL_TYPES} after the function is defined. Be aware that this would then break on python -OO if you didn’t check that __doc__ was defined, as -OO strips docstrings.

JavaScript

This is not the standard technique anyway; the standard technique is to reference the appropriate constant: “Takes one of the animal types in ANIMAL_TYPES”, or similar.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement