Python 如何在模型中存储局部变量?

Python 如何在模型中存储局部变量?,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我有一个模型: class IceCream(db.Model): flavor = db.Column(db.Integer, default=2) licks = 0 def update_licks(self): self.licks += 1 我的目标是,我有一些存储在数据库中的变量,还有一些不存储在数据库中。但是,每次加载对象时,licks都会一直重置为0。如何修复此问题,使变量在服务器运行时不会重置?您要查找的是一个静态变量,它不会在每次

我有一个模型:

class IceCream(db.Model):
    flavor = db.Column(db.Integer, default=2)

    licks = 0

    def update_licks(self):
        self.licks += 1

我的目标是,我有一些存储在数据库中的变量,还有一些不存储在数据库中。但是,每次加载对象时,licks都会一直重置为0。如何修复此问题,使变量在服务器运行时不会重置?

您要查找的是一个静态变量,它不会在每次创建新对象时创建。您确实创建了一个静态变量。但问题是,在编写
self.licks
时创建了一个实例变量。现在有两个变量,一个是名为licks的静态变量,可以通过对象内的
IceCream.licks
访问,另一个是实例变量,可以通过对象内的
self.licks
访问。因此,如何修复它是修改您的代码如下

class IceCream(db.Model):
    flavor = db.Column(db.Integer, default=2)

    licks = 0

    def update_licks(self):
        IceCream.licks += 1

尝试直接指定给类本身而不是实例,因为视图渲染完成后实例会被销毁。基本上,不使用实例变量
self.licks
,而是直接分配给类,即
IceCream.licks
self.licks本身不会创建实例变量。这是(融合的)任务。只要
self.licks
仍将访问类变量,如果没有实例变量对其进行阴影处理。您确定,只要尝试了它,我就能够访问它,得到了…是的..如果分配给值..它会创建