【问题标题】:How to run functions from a Class in the nodes.py file?如何从nodes.py文件中的类运行函数?
【发布时间】:2019-11-08 10:29:45
【问题描述】:

我想在nodes.py文件中按类来组织节点函数。例如,与清理数据相关的函数在“CleanData”类中,带有@staticmethod 装饰器,而其他函数将留在“Other”类中,没有任何装饰器(这些类的名称只是代表)。在管道文件中,我尝试导入类的名称、节点的名称和以下方式:CleanData.function1(它给出了一个错误)并且它们都不起作用。如果可能的话,如何从类中调用节点?

【问题讨论】:

  • 错误是否类似于TypeError: Inputs of function expected ['self', 'data', 'example_test_data_ratio'], but got ['example_iris_data', 'params:example_test_data_ratio']
  • 该错误表示未定义函数的名称。我打错电话了,你的回答解决了。非常感谢!

标签: python python-3.x class pipeline kedro


【解决方案1】:

我不完全确定您遇到的错误是什么。如果你真的试图做from .nodes import CleanData.function1 那是行不通的。导入在 Python 中不是这样工作的。如果你这样做:

nodes.py 有:

class CleanData:
    def clean(arg1):
        pass

pipeline.py 有:

from kedro.pipeline import Pipeline, node
from .nodes import CleanData

def create_pipeline(**kwargs):
    return Pipeline(
        [
            node(
                CleanData.clean,
                "example_iris_data",
                None,
            )
        ]
    )

应该可以的。

【讨论】:

  • 它确实有效!非常感谢你!我在没有类名的情况下调用节点中的函数。基本上,我在导入中做了我应该在管道中做的事情。
  • 太好了! :D
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
相关资源
最近更新 更多