我来自ruby背景,我注意到了python的一些不同之处。。。在ruby中,当我需要创建一个helper时,我通常选择一个模块,如下所示:
module QueryHelper
def db_client
@db ||= DBClient.new
end
def query
db_client.select('whateverquery')
end
end
在pytho中,我执行如下操作:
^{pr2}$我唯一担心的是每次调用query()函数时,它都会一遍又一遍地实例化DBClient()。。。但是根据阅读和测试,当我导入一个模块时,由于python中的一些缓存机制,这似乎不会发生。。。在
问题是,在python中,上面的内容是否是不好的实践,如果是,为什么以及如何改进?也许懒得去评价它?或者如果你们认为这没关系。。。在
简而言之,您想向DBClient对象添加方法吗?为什么不动态添加呢?在
归于Igor Sobreira。在
不需要。
query
函数不会在每次调用时都被重新实例化。这是因为您已经在query
函数的之外创建了一个DBClient
的实例。这意味着您当前的代码是正常的。在如果您的目的是在每次调用
query
时创建一个DBClient
的新实例,那么您只需将声明移动到query
函数中,如下所示:相关问题 更多 >
编程相关推荐