这是我正在使用的一个示例python对象。你知道吗
class DataObj(object):
def __init__(self, cvid, cvname, address, get_info):
self.cvid = cvid
self.cvname = cvname
self.address = address
self.prof = PROF("Honda", "Jason Jones")
class PROF(object):
def __init__(self, organization, manager_name):
self.organization = organization
self.manager_name = manager_name
self.project_list = [Proj("asd", "asd"), Proj("asdsd", "asdsd")]
class Proj(object):
def __init__(self, projectname, projecttype):
self.projectname = projectname
self.projecttype = projecttype
我需要编写一个函数,获取字段列表,并从DataObj中提取所有字段作为键值对。诀窍是它还应该查找DataObj类中组成的对象的属性。例如,如果字段列表是[“cvid”,“organization”,“projectname”],它应该以如下格式返回类似的内容
{'cvid' : 'value', 'organization' : 'Honda', Proj :[{'projectname' : 'asd'}, {'projectname' : 'asdsd'}]
我应该在哪里写这个函数,这样我的代码就更模块化了?我想把它写在DataObj中,但我不知道DataObj中组成的object的属性是什么。如何以更面向对象的方式实现我要做的事情?你知道吗
在
__getattr__
和operator.attrgetter
之间,您可以很容易地完成这项工作:然后,您可以创建一个简单的实用程序函数,该函数针对
DataObj
运行,以从中获取任意一组键值对:或者作为
DataObj
的成员,只需命名第一个与约定匹配的参数self
:__getattr__
允许将属性查找委托给包含的对象,attrgetter
允许您以简单的方式检索一组任意属性。你知道吗我所做的只是简单地添加
__iter__
,它基本上是说嘿,如果您将对象强制转换为iterabale容器类型,您可以对我进行迭代。你知道吗相关问题 更多 >
编程相关推荐