我有一个设计用于postgresql数据库的类:
dbclass = DBclass(1)
class DBclass(object):
select_query = 'SELECT * FROM "{table}" WHERE {table}_id=%s'
def __init__(self, id=None):
self.__id = id
self.__table = self.__class__.__name__.lower()
我的__setattr__
过载:
以及用于连接到从数据库加载内容的方法:
def load(self):
# Here I send select query and get two remaining values
使用这个__setattr__
我只能初始化__id
和{__setattr__
初始化它们,因为__table
变量还没有初始化,而且{
也许我在我的决策中引入了错误的逻辑,db的值不应该像这样初始化。在
似乎您的
load()
方法将分配另外两个值,这意味着它将至少调用__setattr__()
两次。除非您在load()
中有逻辑来避免它,否则您几乎肯定会创建一个无限循环。基本加载方法不太可能是您希望从__setattr__()
中调用的方法,因为它可能会产生意外的副作用(例如,当您更新对象上的任何值时,数据库中的所有值都将重置)。在只需将}。在
load()
移到__init__()
中,并完全删除{相关问题 更多 >
编程相关推荐