argparse:如何调用方法而不是函数?
我在 python 程序中使用 argparse,当我运行我的软件时,我想调用一个方法,如下所示:
$ python __init__.py foo
如果我想调用一个函数而不是一个方法,这很容易:
def foo(args):
pass
def main():
foo_parser.set_defaults(func=foo)
if __name__ == "__main__":
main()
我怎样才能替换“ func=foo”通过“func=MyClass.my_method”?
I am using argparse in my python program and I want to call a method when I run my software like this :
$ python __init__.py foo
It is easy if I want to call a function instead of a method :
def foo(args):
pass
def main():
foo_parser.set_defaults(func=foo)
if __name__ == "__main__":
main()
How can I replace "func=foo" by "func=MyClass.my_method" ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您只需引用方法而不是函数。是的。就是这么简单。而不是
You do
Done!
You just refer to the method instead of the function. Yup. It's that easy. Instead of
You do
Done!
你自己给出了正确答案。只需输入:
而不是:
You gave the correct answer yourself. Just put:
instead of:
您是否正在寻找这样的东西:
用法示例:
Are you looking for something like this :
example of usage:
如果“方法”指的是“实例方法”:您无法使用实例调用实例方法,因此您首先需要一个实例。然后,您只需引用
obj.method
并获取一个BoundMethod
来记住实例 (obj
) - 例如:如果它是静态的 (如果是这样,为什么?99%的自由函数使用起来更简单并且工作得同样好)或类方法,只需参考
Cls.method
。If by "method" you mean "instance method": You can't call an instance method with instance, so you need an instance first. Then, you can just refer to
obj.method
and get aBoundMethod
which remembers the instance (obj
) - e.g.:If it's a static (if so, why? in 99% free functions are simpler to use and work just as well) or class method, just refer to
Cls.method
.