Python:VSCode 不显示继承异常的文档字符串
class CustomNamedException(Exception):
"""Example docstring here."""
def __init__(self, name) -> None:
self._name = name
def __str__(self):
return("Error message.")
我上面提到的异常在VSCode中使用这个类时没有显示文档字符串,信息框里显示的却是 所有异常的公共基类
。
截图:
当我调用这个异常时,显示基类的文档字符串似乎有点多余,我希望能显示 这里是示例文档字符串。
。我是不是漏掉了什么?
更新:
如果我给 __init__()
提供一个文档字符串,它就会显示出来:
这基本上是预期的行为吗?当你从BaseException类继承时,文档字符串会被忽略,除非你把它放在 __init__()
里吗?
1 个回答
0
我不能确定这是不是故意的,但我可以告诉你这个行为看起来是这样的:
class BaseClass:
"""BaseClass docstring"""
def __init__():
"""BaseClass __init__ docstring"""
pass
class DerivedClass(BaseClass):
"""DerivedClass docstring"""
def __init__():
"""DerivedClass __init__ docstring""" # <-
pass
DerivedClass() # DerivedClass __init__ docstring
class BaseClass:
"""BaseClass docstring"""
def __init__():
"""BaseClass __init__ docstring""" # <-
pass
class DerivedClass(BaseClass):
"""DerivedClass docstring"""
def __init__():
# """DerivedClass __init__ docstring""" # commented out
pass
DerivedClass() # BaseClass __init__ docstring
class BaseClass:
"""BaseClass docstring"""
def __init__():
# """BaseClass __init__ docstring""" # commented out
pass
class DerivedClass(BaseClass):
"""DerivedClass docstring""" # <-
def __init__():
# """DerivedClass __init__ docstring""" # commented out
pass
DerivedClass() # DerivedClass docstring
class BaseClass:
"""BaseClass docstring"""
def __init__():
# """BaseClass __init__ docstring""" # commented out
pass
class DerivedClass(BaseClass):
# """DerivedClass docstring""" # commented out
def __init__():
# """DerivedClass __init__ docstring""" # commented out
pass
DerivedClass() # N/A
其实并不是说它不显示派生类的文档字符串,而是它在找__init__
这个方法的文档字符串。如果找不到,它会先看看基类的__init__
文档字符串,如果有的话就用那个(在这个问题的例子中,确实有)。
我同意这可能会让人觉得有点奇怪,尤其是当派生类的构造函数和基类的构造函数差别很大时,这可能会引发一些问题。不过我觉得这并不是一个特别糟糕的设计,我能理解这样选择的原因。