首页 / PYTHON / 通过命令行将值传入Python类
通过命令行将值传入Python类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过命令行将值传入Python类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2583字,纯文字阅读大概需要4分钟。
内容图文
![通过命令行将值传入Python类](/upload/InfoBanner/zyjiaocheng/790/dcdd183c58fe4ae29783a55c7bcfe66b.jpg)
我有一些代码可以从命令行将变量传入脚本.我可以将任何值传递给var arg的函数.问题是,当我将函数放入类中时,变量不会被读入函数.该脚本是:
import sys, os
def function(var):
print var
class function_call(object):
def __init__(self, sysArgs):
try:
self.function = None
self.args = []
self.modulePath = sysArgs[0]
self.moduleDir, tail = os.path.split(self.modulePath)
self.moduleName, ext = os.path.splitext(tail)
__import__(self.moduleName)
self.module = sys.modules[self.moduleName]
if len(sysArgs) > 1:
self.functionName = sysArgs[1]
self.function = self.module.__dict__[self.functionName]
self.args = sysArgs[2:]
except Exception, e:
sys.stderr.write("%s %s\n" % ("PythonCall#__init__", e))
def execute(self):
try:
if self.function:
self.function(*self.args)
except Exception, e:
sys.stderr.write("%s %s\n" % ("PythonCall#execute", e))
if __name__=="__main__":
function_call(sys.argv).execute()
这可以通过输入./function< function>来实现. < arg1 arg2 ....>.问题是我想在类中选择我想要的函数而不仅仅是函数本身.我尝试的代码是相同的,除了函数(var):在类中.我希望有一些关于如何修改我的function_call类来接受它的想法.
如果我想传入值Hello我运行脚本就像这样 – python function_call.py函数Hello.然后将var变量打印为Hello.
通过在命令行中输入变量,我可以在整个代码中使用此变量.如果脚本是一堆函数,我可以使用此代码选择函数,但我想选择特定类中的函数.而不是python function.py函数你好我可以进入类中,例如. python function.py一个函数hello.
此外,我遇到问题是保存在函数外使用的值.如果有人能解决这个问题,我会非常感激.
_________________________________________________________________________________
修改后的代码.这是现在适用于我的代码.
class A:
def __init__(self):
self.project = sys.argv[2]
def run(self, *sysArgs):
pass
def funct(self):
print self.project
class function_call(object):
def __init__(self, sysArgs):
try:
self.function = None
self.args = []
self.modulePath = sysArgs[0]
self.moduleDir, tail = os.path.split(self.modulePath)
self.moduleName, ext = os.path.splitext(tail)
__import__(self.moduleName)
self.module = sys.modules[self.moduleName]
if len(sysArgs) > 1:
self.functionName = sysArgs[1]
self.function = getattr(A(), sysArgs[1])(*sysArgs[2:])
self.args = sysArgs[2:]
except Exception, e:
sys.stderr.write("%s %s\n" % ("PythonCall#__init__", e))
def execute(self):
try:
if self.function:
self.function(*self.args)
except Exception, e:
sys.stderr.write("%s %s\n" % ("PythonCall#execute", e))
if __name__=="__main__":
function_call(sys.argv).execute()
inst_A = A()
inst_A.funct()
谢谢你的帮助.
解决方法:
你可能会发现getattr很有用:
>>> argv = ['function.py', 'run', 'Hello']
>>> class A:
def run(self, *args):
print(*args)
>>> getattr(A(), argv[1])(*argv[2:])
Hello
内容总结
以上是互联网集市为您收集整理的通过命令行将值传入Python类全部内容,希望文章能够帮你解决通过命令行将值传入Python类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。