我希望为Python类中的方法构建相当详细的注释。这些将用于用户中间阶段的故障排除、文档、工具提示等。然而,我不清楚如何将这些注释与函数保持关联。
对于上下文,这是一个功能工程类,因此两个示例方法可能是:
def create_feature_momentum(self):
return self.data['mass'] * self.data['velocity'] *
def create_feature_kinetic_energy(self):
return 0.5* self.data['mass'] * self.data['velocity'].pow(2)例如:
到目前为止,我一直在手动创建文档字符串,如:
def create_feature_kinetic_energy(self)->pd.Series:
'''Calculate the non-relativistic kinetic energy.
Depends on: ['mass', 'velocity']
Supports NaN Values: False
Unit: Energy (J)
Example:
self.data= pd.DataFrame({'mass':[0,1,2], 'velocity':[0,1,2]})
self.create_feature_kinetic_energy()
>>> pd.Series([0, 0.5, 4])
'''
return 0.5* self.data['mass'] * self.data['velocity'].pow(2)然后,通过检查__doc__属性,使用regex获取有关函数的数据。但是,有比__doc__更好的地方可以存储有关函数的信息吗?在上面的示例中,解析Depends on列表相当容易,但在我的用例中,最好也以某种方式嵌入一些示例数据作为数据(我认为在docstring中将它们写为减价是很困难的)。
有什么想法吗?
发布于 2022-07-06 09:23:52
最后,我写了一个课程,如下所示:
class ScubaDiver(pd.DataFrame):
accessed = None
def __getitem__(self, key):
if self.accessed is None:
self.accessed = set()
self.accessed.add(key)
return pd.Series(dtype=float)
@property
def columns(self):
return list(self.accessed)以编写代码的方式,我可以这样做:
sd = ScubbaDiver()
foo(sd)
sd.columnssd.columns包含foo访问的所有列。
尽管这在您的代码库中可能不起作用。
我还写了这个装潢师:
def add_note(notes: dict):
'''Adds k:v pairs to a .notes attribute.'''
def _(f):
if not hasattr(f, 'notes'):
f.notes = {}
f.notes |= notes # Summation for dicts
return f
return _您可以使用它如下:
@add_note({'Units':'J', 'Relativity':False})
def create_feature_kinetic_energy(self):
return 0.5* self.data['mass'] * self.data['velocity'].pow(2)然后你就可以:
create_feature_kinetic_energy.notes['Units'] # Jhttps://stackoverflow.com/questions/70148604
复制相似问题