gpt4 book ai didi

python - 在模块中实例化一个类

转载 作者:行者123 更新时间:2023-12-01 04:22:41 24 4
gpt4 key购买 nike

我有 ruby​​ 背景,我注意到与 python 的一些差异...在 ruby​​ 中,当我需要创建一个助手时,我通常会选择一个模块,如下所示:

module QueryHelper
def db_client
@db ||= DBClient.new
end

def query
db_client.select('whateverquery')
end
end

在 python 中,我做了如下的事情:

db_client = DBClient()

def query():
return db_client.select('whateverquery')

我对上述问题唯一担心的是,每次我调用 query() 函数时,它都会尝试一遍又一遍地实例化 DBClient()...但根据阅读和测试,由于某些缓存,这似乎不会发生当我导入模块时Python中的机制...

问题是上面的Python做法是否不好,如果是,为什么以及如何改进?也许懒惰评价它?或者,如果你们认为这样就可以了......

最佳答案

没有。 query 函数不会在每次调用时重新实例化。这是因为您已经在 query 函数的外部创建了一个 DBClient 实例。这意味着您当前的代码没有问题。

如果您的目的是在每次调用 query 时创建一个新的 DBClient 实例,那么您应该将声明移动到 query 中> 函数,像这样:

def query():
db_client = DBClient()
return db_client.select( ... )

关于python - 在模块中实例化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com