gpt4 book ai didi

python - 跨模块重用类对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:10 24 4
gpt4 key购买 nike

我试图了解在 python 模块中重用类实例的最佳方法...

在 ruby​​ 中,我可以通过执行以下操作来完成此操作:

module MyMod
def client
@var ||= DBClient.new
end

def query
client.select(...)
end
end

假设下面的内容在 python 中是等效的是否正确?

class Client():
connection = DBClient()

def query():
Client().connection.select(...)

在Python标准中,上面的内容可以吗?有更好的方法吗?感谢您的帮助

最佳答案

不,这些东西根本不一样。 Ruby 代码实例化一次连接并将其分配给实例 var;每次调用 query 时,Python 代码都会创建一个新的 Client 实例,尽管它们共享连接实例。

但是不需要添加包装器。如果您想创建一次,请在模块级别执行此操作:

connection = DBClient()

def query():
connection.select(...)

真的,你应该停止用 Python 编写 Ruby;如果你想编写Python,你应该学习如何用Python惯用地编写东西,而不是简单地直接翻译你的Ruby代码。

关于python - 跨模块重用类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33438761/

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