gpt4 book ai didi

python : tracking change in class to save it at the end

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

class A(object):
def __init__(self):
self.db = create_db_object()

def change_Db_a(self):
self.db.change_something()
self.db.save()

def change_db_b(self):
self.db.change_anotherthing()
self.db.save()

我正在从数据库中获取对象,我在多个函数中更改它并将其保存回来。这很慢,因为它在每次函数调用时都会访问数据库。有没有像解构函数这样的东西,我可以在其中保存数据库对象,这样我就不必为每个函数调用都保存它,也不会浪费时间。

最佳答案

不要依赖 __del__ 方法来保存您的对象。有关详细信息,请参阅此 blog post .

您可以使用 context management protocol通过定义 __enter____exit__ 方法:

class A(object):
def __enter__(self):
print 'enter'
# create database object here (or in __init__)
pass

def __exit__(self, exc_type, exc_val, exc_tb):
print 'exit'
# save database object here

# other methods

然后在创建对象时使用 with 语句:

with A() as myobj:
print 'inside with block'
myobj.do_something()

当您输入with block 时,将调用A.__enter__ 方法。当您退出 with block 时,将调用 __exit__ 方法。例如,使用上面的代码,您应该看到以下输出:

enter

inside with block

exit

下面是关于 with 语句的更多信息:

关于 python : tracking change in class to save it at the end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324317/

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