-1

假设有一个 cmd

python somefile.py arg

somefile 包含一个定义

class CamelCase(object):

我想获取 arg 并使其成为类实例,例如:

arg = CamelCase(whatever_args)

问题是如果我使用 os 中的 sysarg 并将其作为 arg,它不会是一个字符串吗?

然后有什么解决方法吗?

4

1 回答 1

2

据我所知,你希望你的脚本运行为

./script.py MyObject

并创建一个MyObject.

为此,您可以使用globals()

import sys

class A(object):
    def __init__(self):
        print "A created"

class B(object):
    def __init__(self):
        print "B created"

cls = globals()[sys.argv[1]] # Get the class name from globals

instance = cls()

注意事项:

  • 必须导入该类。您可以自行解析命名空间并导入所需的模块。
  • 您必须仔细验证输入。

也许您真正想要的是一个可能的参数和类的字典,如下所示:

classes = {
    'A': A,
    'B': B,
}

cls = classes[sys.argv[1]]

instance = cls()
于 2013-06-10T08:28:14.987 回答