我试图了解在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标准中上面可以吗?有更好的方法吗?谢谢你的帮助
答案 0 :(得分:1)
不,这些事情根本不相同。 Ruby代码实例化一次连接并将其分配给实例var;每次调用query
时,Python代码都会创建一个新的Client实例,尽管它们共享连接实例。
但是没有必要添加包装器。如果要创建一次,请在模块级别执行此操作:
connection = DBClient()
def query():
connection.select(...)
真的,你应该停止在Python中编写Ruby;如果你想编写Python,你应该学习如何在Python中以惯用方式编写东西,而不是简单地直接翻译你的Ruby代码。