我有以下两个类:
class DbQuery:
def __init__(self,query):
self.query = query
class DbResultSet:
def __init__(self,query):
self.result = []
这些类用于SQL查询和结果,属性用于模拟类似枚举的功能。查询如下所示:
q_forum_heirarchy =\
type( "RtDbQuery",
DbQuery( """SELECT level, id, parent_id, name
FROM forum_heirarchy_node
WHERE forum_id = :f_id
AND level != 0
ORDER BY level ASC;"""),
LEVEL=0, ID=1, PARENT_ID=2, NAME=3 )
我有什么方法可以将DbQuery中的属性复制到DbResultset中吗?我不想在查询结果集中嵌入查询,因为那时我必须编写db_resultset.query.LEVEL
而不是db_resultset.LEVEL才能进入枚举序列。
我看到__get_attribute__
方法,但我想这是由attribute_name索引的。
修改:
代码是无效的python,它不会改变我所要求的要点。我发现psycopg2(数据库库)可以做namedtuples()(带有枚举性能字符的python对象),所以我不能再烦恼了:D
答案 0 :(得分:1)
我认为您应该使用__getattr__
方法。当没有找到类属性时,查找机制使用此方法。
class DbQuery(object):
def __init__(self,query):
self.query = query
class DbResultSet(object):
def __init__(self, dbquery):
self.result = []
self.dbquery = dbquery
def __getattr__(self, name):
return getattr(self.dbquery,name)