编程语言 - 在python 创建对象实例过程中,如何将字典对象的key,value分别作为类构造函数的keyword和value?
PHP中文网
PHP中文网 2017-04-17 15:40:23
0
2
315

假设有如下的json数据, name为需要创建实例的class的名字,arguments为 class的构造函数的参数.

{ "name": "Student" "arguments": [ {"name": "Bob"}, {"age": 14} ] }

同时有个class如下

class Student(object): def __init__(self, name, age): self.name = name self.age = age def get_name(self): return self.name def get_age(self): return self.age

同时再加一个限制条件, class 为第三方定义出来的,并且不同class的构造函数,参数个数都无法预知.程序能够利用的只有json格式的参数.
从json数据转到python对象可以用json模块来实现,那提取到的参数怎么才能够通过Student(keyword=argument)这样的方式创建出实例呢?

PHP中文网
PHP中文网

认证0级讲师

reply all (2)
洪涛

核心方法是通过globals()获取类对象并创建实例

import json class Student(object): def __init__(self, name, age): self.name = name self.age = age def get_name(self): return self.name def get_age(self): return self.age if __name__ == '__main__': jstr = ''' { "name": "Student" , "arguments": [ {"name": "Bob"}, {"age": 14} ] }''' try: obj = json.loads(jstr) param = {} # merge dict for v in obj['arguments']: param = dict(v.items()+param.items()) # create object res = globals()[obj['name']](**param) print res.get_name() print res.get_age() except (ValueError, KeyError, TypeError): print "JSON format error"
    阿神

    看看这个会不会对你有帮助: Python描述器引导

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!