Modifying a python docstring with a decorator: Is it a good idea?

2024/10/9 6:21:52

A python docstring must be given as a literal string; but sometimes it's useful to have similar docstrings for several functions (e.g., different constructors), or several access methods might accept the same list of arguments (and then rely on the same hidden method), so it would be nice to use the same description everywhere. For such cases I can construct a docstring by assigning to __doc__, which I do by means of a simple decorator. The system works very nicely (in python 2), and I'm pleased with how simple, clear and well-encapsulated it is.

The question: Is this a good idea? In particular, are there tools that would be confused by this set-up (e.g., anything that extracts docstrings from the source rather than from the bytecode). Is the solution still going to work in python 3? Are there other reasons or circumstances that would make this inadvisable?

Answer

It should not break any tools and it should work on Python 3.

It is ok If it doesn't hurt a source code readability i.e., you can still find out what the function does and how to use it.

The problem might be that it masks a poor design. If several methods use the same list of arguments the code should be refactored (create an object that works with the list) rather than patched by generating repetitive docstrings.

https://en.xdnf.cn/q/70045.html

Related Q&A

Counting number of columns in text file with Python

I have two text files composed of spaced-separated columns. These are excerpts of these two files:FileA1 1742.420 -0.410 20.1530 0.4190 1.7080 0.59402 1872.060 0.070 21.4710 0.2950 0.0…

Django on Apache web server dict object has no attribute render_context

Im having a bit of a problem, I uploaded my Django project to a webserver running apache, mod_python, and django. On the computer I developed on the following works finenameBox = getNamesBox().render(l…

Verbose log abbriviations meaning in SVC, scikit-learn

I am looking for the meaning of verbose log abbriviations of SVC function in scikit-learn?If nSV is the number of support vectors, #iter is the number of iteration, what dose nBSV, rho,obj mean?This …

networkx draw_networkx_edges capstyle

Does anyone know if it is possible to have fine-grained control over line properties when drawing networkx edges via (for example) draw_networkx_edges? I would like to control the line solid_capstyle …

Setting up the path so AWS cli works properly

I installed AWSCLI by using:pip install --upgrade --user awscliNow if I type aws configure in the cmd I get: aws is not recognized as an internal or external command...Im pretty sure the path needs to …

Comparing value with neighbor elements in numpy

Lets say I have a numpy arraya b c A = i j ku v wI want to compare the value central element with some of its eight neighbor elements (along the axis or along the diagonal). Is there any faster way exc…

Is Python bad at XML? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, argum…

Conditional color with matplotlib scatter

I have the following Pandas Dataframe, where column a represents a dummy variable:What I would like to do is to give my markers a cmap=jet color following the value of column b, except when the value i…

Cumulative sum with list comprehension

I have a list of integers:x = [3, 5, 2, 7]And I want to create a new list where the nth element is the sum of elements in x from 0 to n-1.This would result in:y = [0, 3, 8, 10]How can I do this with li…

How to get image size in KB while using Pillow-python before storing to disk?

Im using Pillow for image processing in Python,url="http://www.image.com/some_image.jpg";path = io.BytesIO(urllib.request.urlopen(url).read())original_image = Image.open(path)Any idea how i c…