gpt4 book ai didi

python - 实现在属性更新时调用外部函数的 Python 类的正确方法

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

我目前正在尝试实现一个 python 类,它可以通过隐式缓冲自动与 NoSQL 数据库同步,就像 SLQAlchemy 的图像一样。 。

为了做到这一点,我需要跟踪用户发出的属性更新,并在每次属性更新时调用使该对象与数据库或缓冲区保持同步的函数。

在 Python 中执行此操作的最佳方法是什么?如果它通过 __setattr____delattr__,我该如何正确执行,以避免弄乱垃圾收集器?

最佳答案

一种方法(我推荐的方法)是使用 descriptors .

首先,为您的属性创建一个类,例如:

class Property:
def __init__(self, *args, **kwargs):
#initialize the property with any information it needs to do get and set
def __get__(self,obj, type=None):
#logic to get from database or cache

def __set__(self,obj, value):
#logic to set the value and sync with database if necessary.

然后在你的类实体类中你有这样的东西:

class Student:
student_id = Property(...)
name = Property(...)
classes = Property(...)

当然,在实践中您可能有多种属性类型。我的猜测是 SQLAlchemy 做了类似的事情,其中​​列类型是描述符。

关于python - 实现在属性更新时调用外部函数的 Python 类的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793410/

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