attrs
attrs copied to clipboard
Adding docstrings to classes created with `make_class`
Hi there, I might have missed something. If I have my apologies.
My question is pretty basic: is there a way to add a docstring to class created with make_class? For example
from attrs import define
@define
class D:
"""
Docstring
"""
# Prints out the docstring above
print(D.__doc__)
C = make_class("C", ["a", "b"])
# Prints None, which makes it seem like the docstring is unset.
# Is there a way to have the docstring be set when a class is created
# via `make_class`?
print(C.__doc__)
Thanks for any help
Hmm ok, having read #8, I suspect the answer to this is that it is impossible. If any maintainers/experts think otherwise though, I'd be interested to hear their thoughts.
You can wrap make_class with your own function and set the docstring yourself. It's only a matter of C.__doc__ = "docstring", right?
You can wrap make_class with your own function and set the docstring yourself. It's only a matter of C.doc = "docstring", right?
I'm not sure that works in all cases (at least #8 discusses lots of cases where it appears more complex), but that is certainly a possible workaround.
If I remember correctly, just attaching __doc__ to something doesn't work. But I'm open to be proven wrong here.
also #1294 seems to be tangentially related
Passing class_body= {"__doc__": "doc string"} to make_class seems to set the doc string correctly.
oh nice, assigning works too, btw. I tried both and then called help() on them.
looks like this behavior changed since Python 2 because there it doesn't:
>>> C.__doc__ = "foo"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: attribute '__doc__' of 'type' objects is not writable
this means we could move a nontrivial number of issues forward if people care enough about these topics?