我有一个类,使用以下方法:
@staticmethod
def get_values(df: pd.DataFrame, val: str) -> pd.DataFrame:
match val:
case "mean_2_step":
return (
df["mean_2"]
.shift()
.rolling(window=10, min_periods=3, closed="right", step=2)
.mean()
)
case "mean_4_step":
return (
df["mean_4"]
.shift()
.rolling(window=20, min_periods=4, closed="right", step=4)
.mean()
)
return df
我想从该方法中获取信息,可能不调用它。该操作的主要目的是获取此信息(作为文档的一种形式)并将其保存在www.example.com中ReadMe.md,如下所示:
| 瓦尔|计算|
| --|--|
| 平均2步|df[“mean_2”].shift().rolling(window=10,min_periods=3,closed=“right”,step=2).mean()|
| 平均4步|df[“mean_4”].shift().rolling(window=20,min_periods=4,closed=“right”,step=4).mean()|
如何做到这一点?
1条答案
按热度按时间jhdbpxl91#
你要做的是解析函数源代码(body),以 <match pattern的形式获取特定节点
match_case
s的信息:match body>.inspect
和ast
模块是最好的。假设你的类叫做
MyClass
。算法如下:
inspect.getsource
获取函数对象的源代码textwrap.dedent
更正缩进,为进一步解析做准备AST
节点,其中包含ast.parse
ast.walk
遍历后代节点,同时仅过滤所需类型的节点ast.match_case