Python:正确地使用Click with优main_2;和u init__

2024-06-01 02:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在玩Click package,但我不能让下面的代码片段正常工作。在

import numpy as np
import click

@click.command()
@click.option('--get_print', default = True)

class CustomClass():

     def __init__(s, get_print):

        s.data = np.random.normal(0, 1, 10)
        s.get_print = get_print

        if s.get_print:
            print("get_print =", s.get_print)

     def print_mean(s):

        print("Printing mean:")

        mean_ = np.mean(s.data)

        if s.get_print:

            print(mean_)

if __name__ == '__main__':
    CustomClass().print_mean()

似乎从未调用print_mean函数。如果我注释掉@Click decorator,并手动设置get_print=True,则调用print_mean方法就可以了。在

我怀疑@Click以某种方式设置了__main__,所以当我这样做时,它只是再次调用Click,但也许我错了?在

在这两种情况下,当您希望__init__方法继承所有选项,if __name__ == '__main__'能够实际调用类中的函数时,使用Click的正确方式是什么呢?在


Tags: nameimporttruedatagetifinitmain
1条回答
网友
1楼 · 发布于 2024-06-01 02:42:10

这只是为了说明我在评论中的意思。用click函数装饰一个函数,并让该函数实例化类并执行所需的任何成员函数。点击文档建议如下:

import numpy as np
import click

class CustomClass:
    def __init__(self, get_print):
        self.data = np.random.normal(0, 1, 10)
        self.get_print = get_print

        if self.get_print:
            print("get_print =", self.get_print)

    def print_mean(self):
        print("Printing mean:")
        mean_ = np.mean(self.data)
        if self.get_print:
            print(mean_)

@click.command()
@click.option(' get_print', default=True)
def cli(get_print):
    cc = CustomClass(get_print)
    cc.print_mean()

if __name__ == '__main__':
    cli()

…并且您可能希望get_print作为带有默认False的标志:

^{pr2}$

相关问题 更多 >