python将对象名的字符串类型,转化为相应对象的操作方法

在实际使用Python的过程中,遇到了一个问题,就是定义一个数组,数组内容为对应类名字的字符串。

此时在调用对应的类,生成实例时,需要将字符串转化为相应的类,之后再进行实例化。

# coding : utf-8import timefrom OffLineGateway import OffLineGatewayfrom OffLineTS import OffLineTSimport copy

class PlayTest(object):    def __init__(self, file):        self.file = file        get_obj = file.split(‘.‘)[0]        module = __import__(get_obj)        self.server_name = getattr(module, get_obj)()        self.test_param_file = r‘./‘ + file.split(‘.‘)[0] + r"param" + time.strftime("%H%M%S", time.localtime()) + ".txt"        self.test_func_file = r‘./‘ + file.split(‘.‘)[0] + r"func" + time.strftime("%H%M%S", time.localtime()) + ".txt"

def set_function(self, num, variable):        flag = 0        content = ""        file_object = open(self.file, ‘r‘, encoding=‘utf-8‘)        for line in file_object:            string = r‘    def test_exe_param‘ + str(num) + r‘(self):‘            if line.__contains__(string) and flag == 0:                flag = 1                content += ‘    def test_exe_param‘ + str(num) + ‘_‘ + str(variable) + r‘(self):\n‘            else:                if line.__contains__("    def test_exe_param") and flag == 1:                    break                elif flag == 1:                    if line.__contains__(‘self.assertFalse(True, ‘):                        content += line                        content += ‘\n        if get_return_code != "000000":\n‘                        content += ‘            self.assertEqual(get_errormsg, self.server.read_config‘ \                                   ‘(self.config_file, get_return_code))\n‘                        content += ‘        else:\n‘                        content += ‘            self.assertFalse(True, "没有对应的错误码。")\n\n‘                        break                    else:                        if line.__contains__(‘result = self.server.get_result(self.ip, self.param‘):                            new_line = line.replace(str(num), str(num) + "_" + str(variable))                            content += ‘\n‘ + new_line                        elif line.__contains__(‘self.param‘ + str(num) + ‘[‘):                            new_line = line.replace(str(num), str(num) + "_" + str(variable))                            content += ‘\n‘ + new_line                        else:                            content += line                else:                    pass

return content

def get_param(self):        of = self.server_name.setUp()        for i in range(1, 100):            try:                j = 1                param = eval("of[‘self‘].param" + str(i))                print(i)                port = list(param.keys())[0]                temp = copy.deepcopy(param)                for key in param[port][1].keys():                    param[port][1][key] = ""                    with open(self.test_param_file, "a", encoding="utf-8") as f:                        f.write("        self.param" + str(i) + "_" + str(j) + " = " + str(param) + "\n")                    # print("self.param" + str(i) + "_" + str(j) + " = " + str(param))                    with open(self.test_func_file, "a", encoding="utf-8") as f:                        f.write(self.set_function(i, j))                    # print(self.set_function(i, j))                    j += 1                    param[port][1][key] = temp[‘gw‘][1][key]                for key in param[port][1].keys():                    param[port][1][key] = ""                with open(self.test_param_file, "a", encoding="utf-8") as f:                    f.write("        self.param" + str(i) + "_" + str(j) + " = " + str(param) + "\n")                # print("self.param" + str(i) + "_" + str(j) + " = " + str(param))                with open(self.test_func_file, "a", encoding="utf-8") as f:                    f.write(self.set_function(i, j))                # print(self.set_function(i, j))                j += 1                param[port][1] = {}                with open(self.test_param_file, "a", encoding="utf-8") as f:                    f.write("        self.param" + str(i) + "_" + str(j) + " = " + str(param) + "\n")                # print("self.param" + str(i) + "_" + str(j) + " = " + str(param))                with open(self.test_func_file, "a", encoding="utf-8") as f:                    f.write(self.set_function(i, j))                # print(self.set_function(i, j))            except AttributeError as ae:                print("没有了。")                break

if __name__ == ‘__main__‘:    file_name = [‘OffLineGateway‘, ‘OffLineTS‘]    for name in file_name:        print(name)        test = PlayTest(name + ".py")        test.get_param()        time.sleep(1.0)

+++++++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++++++

方法一:

class obj(object):

pass

a = eval(‘obj()‘)

方法二:

如果是经常需要这样可以

#将用来创建对象的字符串预编译成code对象.

create_obj = compile(‘obj()‘, ‘create_obj.py‘, ‘eval‘)

#需要创建的时候, 直接用code对象, 这样会有效率上的提升. #因为code对象是预编译过的, 而不用每次去编译

a = eval(create_obj)

方法三:

file_name  模块名

module = __import__(file_name)

AClass = getattr(module, class_name_str)()

a = AClass() 或

obj = new.instance(AClass)

方法四: 也可以使用global(),locals(),dir()这类获取对象名和对象对应的函数

转自:http://www.th7.cn/Program/Python/201510/666094.shtml

时间: 2024-10-19 12:58:44

python将对象名的字符串类型,转化为相应对象的操作方法的相关文章

事件补充;对象操作;字符串类型操作;数组操作;数字类型操作

1.事件绑定函数 var  a=document.querySelector('') a.onclick=function h() 先有函数 a.onclick=function h绑定地址 完成事件的绑定后, 绑定的函数由系统来调用, 系统在用户触发事件时来调用box.onclick = function () { alert(this.innerText) 循环绑定的变量污染for (var i ;i<6;i++){a[i].onclick=function h()}处理办法 for (va

Json对象与Json字符串的转化、JSON字符串与Java对象的转换

Json对象与Json字符串的转化.JSON字符串与Java对象的转换 一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2.浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: JSON.stringify(obj)将JSON转为字符串.JSON.parse(string)

python笔记5-字符、字符串类型

字符.字符串类型   #print(1/2) # print(1//2)#地板除,就是自动取整,不会四舍五入,直接把小数抹去 #if判断时候,都是判断的真或者假,也就是True和False 非0即真,非空既真 name=input("请输入你的名字:") if name:     print(name) else:     print("error....") 1.布尔类型 bool=False; print bool; bool=True; print bool;

Python学习笔记整理四--字符串类型

定义:元素以引号包围的.元素可以是任意类型的有序的不可修改的序列: 定义字符串: str()  如:a = str(1234) ''     如:a = 'nihao' ""    如:a = "nihao" ''' ''', """ """ 如:a = '''nihao''', a = """nihao""" 注意: 当需要用到缩写如I'm时,就

Python数据类型(二)字符串类型

字符串类型 字符串是字符的序列表示,可以用一对单引号(").双引号(" ")或者三引号('''  ''')构成.其中,单引号和双引号 作用相同,都可以表示单行字符串,使用单引号时,双引号可以作为字符串的一部分,反之也是如此.三引号可以表示 单行或者多行字符串(具有回车换行的功能).字符串可以保存在变量中,也可以单独存在. 可以用type()函数测试 一个字符串的类型. 字符串索引 字符串包含两种序号体系:正向递增序号和反向递减序号.正向递增时,最左侧字符序号为0,向右依次递增

将DataTable转换为List&lt;T&gt;对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”。

可以利用反射将DataTable转换为List<T>对象:原始链接http://www.jb51.net/article/67386.htm 但是该方法在DataTable里某个字段类型是Int32会有问题,报异常:类型"System.Int64"的对象无法转换为类型"System.Int32". 可在赋值的时候加一句: if(pi.GetMethod.ReturnParameter.ParameterType.Name == "Int32&q

Python进阶:如何将字符串常量转化为变量?

前几天,我们Python猫交流学习群 里的 M 同学提了个问题.这个问题挺有意思,经初次讨论,我们认为它无解. 然而,我认为它很有价值,应该继续思考怎么解决,所以就在私密的知识星球上记录了下来. 万万没想到的是,在第二天,有两位同学接连给出了解决方法! 由此,群内出现了一轮热烈的技术交流. 本文将相关的内容要点作了梳理,并由此引申到更进一步的学习话题,希望对你有所帮助. 1.如何动态生成变量名? M 同学的问题如下: 打扰一下大家,请教一个问题,已知 list = ['A', 'B', 'C',

JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化

这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in jsonObj){} 来遍历数组中的每个对象,其中p表示key,jsonObj[p]表示key所对应的值. 2. 转化为字符串 var jsonStr = JSON.stringify(jsonObj) 后端:需要用到阿里的fastjson包(其他的用法可以参考博客:https://blog.csdn

json对象与json字符串的转化

1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2.浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: JSON.stringify(obj)将JSON转为字符串.JSON.parse(string)将字符串转为JSON格式: var a={"name":"tom","s