gpt4 book ai didi

python - 属性文档字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:29 25 4
gpt4 key购买 nike

考虑代码:

class MyClass(object):
'''
Keep track of file and its path on disk
'''

def __init__(self):
self.file = None
self.path = None

我想将文档字符串添加到所有属性中。所以,我可以做类似的事情(对于文件属性):

class MyClass(object):
...

@property
def file(self):
'''
this is a doc-string for file property
'''

return self._file

@file.setter
def file(self, value):
self._file = value

@file.deleter
def file(self):
del self._file

但是,为每个属性编写getter、setter 和deleter 方法是很繁琐的。事实上,这些方法(如上所示)执行默认工作。

有没有一种简单的方法可以只将文档字符串添加到属性中?

最佳答案

好吧,您始终可以创建自己的描述符,以允许以标准方式记录和实现其他操作:

class DocProperty(object):

def __init__(self, doc=None):
self._values = {}
self.__doc__ = doc

def __get__(self, obj, objtype=None):
if obj is None:
return self
return self._values[obj]

def __set__(self, obj, value):
self._values[obj] = value

def __delete__(self, obj):
del self._values[obj]

然后你会像这样使用它:

class SomeClass(object):

p1 = DocProperty('some docs')

print SomeClass.p1.__doc__
# some docs
c = SomeClass()
c.p1 = 2
print c.p1
# 2
del c.p1

不过,就我个人而言,我认为这太过分了。如果代码需要它,请在构造函数中使用注释。所有自动文档生成器还支持以某种方式注释简单的 Python 属性。

关于python - 属性文档字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com