Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串创建对象类型_Python_Xml - Fatal编程技术网

Python 从字符串创建对象类型

Python 从字符串创建对象类型,python,xml,Python,Xml,标题可能很模糊,我不知道该怎么说这个问题,所以请原谅 我有一个python文件,比如module.py class myClass(obj): """ class Description """ def myMethod(args): """ method Description """ # method definition 我有一个xml文件,比如说module\u result.xml <

标题可能很模糊,我不知道该怎么说这个问题,所以请原谅

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

class myClass(obj):
    """
    class Description
    """
    def myMethod(args):
        """
        method Description
        """
        # method definition
我有一个xml文件,比如说module\u 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>
我必须通过从xml中读取名称来实现这一通用性,这些名称的类型为string

getdoc()的参数类型是对象类型,我在使用带有字符串的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)
这样做后,我得到上述错误


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

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

假设您想从“myModule”实例化一个“myClass”实例。为了简单起见,我们假设“myModule”已经导入

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

我不明白你想表达的意思。。这里的“name”是什么?我想你问的是:给定一个表示类名称的字符串,如何实例化该类的实例?。无论如何,我们可能知道你在寻找什么。我再次更新了我的答案,以反映我学到的一些新东西。你第一次就答对了问题。。这里我不知道模块/类/方法的名称。。。。它们只是作为字符串类型(从xml文件中提取)存储在某个变量或列表中。我将编辑问题,使事情更清楚…我更新的答案是接近你想要的。它假定模块已导入,但目标类为字符串形式。e、 g.
obj=create\u object(“myModule”、“myClass”)
您可以使用我引用的链接,了解如何通过字符串动态导入模块,例如
\uuuuu import\uuuu(“myModule”)
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