标题可能很模糊,我不知道如何解决问题,所以请原谅我。
我有一个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)
执行此操作后,我收到了上述错误。
如何将字符串转换为对象类型?
答案 0 :(得分:2)
从其他地方引用两个不同的问题
让我们假设你要实例化一个&#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