最佳答案
我正在编写一个轻量级类,它的属性应该是可公开访问的,并且只有在特定的实例化中才会被覆盖。Python 语言中没有为类属性或任何类型的属性创建 docstring 的规定。如果存在一种记录这些属性的预期和支持的方式,那么它是什么呢?目前我正在做这样的事情:
class Albatross(object):
"""A bird with a flight speed exceeding that of an unladen swallow.
Attributes:
"""
flight_speed = 691
__doc__ += """
flight_speed (691)
The maximum speed that such a bird can attain.
"""
nesting_grounds = "Raymond Luxury-Yacht"
__doc__ += """
nesting_grounds ("Raymond Luxury-Yacht")
The locale where these birds congregate to reproduce.
"""
def __init__(self, **keyargs):
"""Initialize the Albatross from the keyword arguments."""
self.__dict__.update(keyargs)
这将导致类的 docstring 包含最初的标准 docstring 部分,以及通过增加对 __doc__
的赋值为每个属性添加的行。
虽然这种风格似乎没有明确禁止在 Docstring 样式指南,它也没有提到作为一个选项。这里的优点是,它提供了一种方法,可以在定义的同时记录属性,同时仍然创建一个可表示的类 docstring,并避免编写重复 docstring 中信息的注释。我仍然有点烦恼,因为我必须实际写两次属性; 我正在考虑使用 docstring 中值的字符串表示形式,以至少避免缺省值的重复。
这是对特别社区公约的严重违反吗?可以吗?还有更好的办法吗?例如,可以创建一个字典,其中包含属性的值和 docstring,然后在类声明的末尾将内容添加到类 __dict__
和 docstring; 这将减少键入属性名称和值两次的需要。编辑: 最后一个想法,我认为,实际上是不可能的,至少在没有动态地从数据构建整个类的情况下是不可能的,这似乎是一个非常糟糕的想法,除非有其他的原因要这样做。
我对 python 还很陌生,仍然在研究编码风格的细节,所以也欢迎不相关的批评。