跨modu重用类对象

2024-06-16 12:48:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

假设下面的内容在python中是等价的吗?在

^{pr2}$

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


Tags: 模块实例方法client内容newvardef
1条回答
网友
1楼 · 发布于 2024-06-16 12:48:32

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

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

connection = DBClient()

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

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

相关问题 更多 >