在命令行中运行 python 脚本不会打印任何输出

新手上路,请多包涵

我想在 python 中制作一个脚本,然后从命令行运行它。该脚本称为 test.py 运行它的命令是:

 python3 test.py John Jackson

这是预期的输出:

 John Jackson

这是我制作的 python 脚本:

 class person:

    def __init__(self, first, last):
        self.firstname = first
        self.lastname = last

    def get_first(self):
        return self.firstname

    def get_last(self):
        return self.lastname

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('first')
    parser.add_argument('last')
    args = parser.parse_args()
    c1 = person(args.first, args.last)
    print(c1)

但问题是当我使用上述命令从命令行运行脚本时,它什么都不返回。您知道如何修复它并获得预期的输出吗?

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我不确定您是否在运行脚本时调用了 main 函数。

添加

if __name__ == "__main__":
    main()

并覆盖 __str__ person 类的函数以打印名字和姓氏,同时将类作为参数传递给 print

 def __str__(self):
    return self.firstname + ' ' + self.lastname

整个代码是这样的

import argparse

class person:

    def __init__(self, first, last):
        self.firstname = first
        self.lastname = last

    def get_first(self):
        return self.firstname

    def get_last(self):
        return self.lastname

    def __str__(self):
        return self.firstname + ' ' + self.lastname

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('first')
    parser.add_argument('last')
    args = parser.parse_args()
    c1 = person(args.first, args.last)
    print(c1)

if __name__ == '__main__':
    main()

原文由 Akhil Batra 发布,翻译遵循 CC BY-SA 4.0 许可协议

您定义了 main() 函数但没有调用它。

在脚本末尾添加:

 if __name__ == "__main__":
    main()

请参阅 if __name__ == “__main__”: 做什么? .

然后, c1person 实例,它将打印:

 $ python3 test.py John Jackson
<__main__.person object at 0x104907ef0>

您需要调用 get_first()get_last() 以获得正确的输出:

 print(c1.get_first(), c1.get_last())

原文由 Gino Mempin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题