从字符串创建对象类型

时间:2016-12-20 06:16:17

标签: python xml

标题可能很模糊,我不知道如何解决问题,所以请原谅我。

我有一个python文件,比如 module.py

class myClass(obj):
    """
    class Description
    """
    def myMethod(args):
        """
        method Description
        """
        # method definition

我有一个xml文件,比如 module_result.xml

<testsuite errors="0" failures="0" name="module.myClass-20161215114804" skipped="0" tests="1" time="0.000">
    <testcase classname="module.myClass" name="myMethod" time="0.000"/>
    <system-out>
        something
    </system-out>
</testsuite>

我有另一个python文件, test.py ,我必须使用module_result.xml来解析module.py 我在test.py中做的事情(通过给出硬编码路径)是:

getdoc(module.myClass.myMethod)

我必须通过从xml中读取名称来制作此通用名称,并且这些名称的类型为 string

getdoc()的参数类型是 object 类型,我在使用带字符串的getddoc()时遇到此错误:

str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or
errors is specified, then the object must expose a data buffer
that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined)
or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.

test.py中的工作代码:

import module
getdoc(module.myClass.myMethod)

但是,这是硬编码的,在我的情况下是不可接受的

我从xml文件中提取模块/ myClass / myMethod名称

假设我通过某种逻辑将这些名称变为变量:

string_variable = "module.myClass.myMethod"

我现在想要这样做:

getdoc(string_variable)

执行此操作后,我收到了上述错误。

如何将字符串转换为对象类型?

1 个答案:

答案 0 :(得分:2)

从其他地方引用两个不同的问题

herehere

让我们假设你要实例化一个&#34; myClass&#34;的实例。来自&#34; myModule&#34;。为了简单起见,我们假设&#34; myModule&#34;已导入

import sys
import myModule
import myOtherModule

def create_object(modulename, classname):   # modulename and classname are strings
    mod = sys.modules[modulename]
    cls = getattr(mod, classname)
    inst = cls()
    return inst