Skip to main content
 首页 » 编程设计

python之迭代并设置类属性之Python Django

2024年12月31日27luoye11

是否可以在 __init__ 函数之外将类属性设置为类属性(而不是实例属性)。

我想做这样的事情:

class Trades(): 
    def __init__(self): 
        for i in range(24): 
            setattr(self, f'Hour_{i}', 0) 

但对于 django 模型,例如像这样的东西:

class Trades(models.Model): 
    date = models.DateField() 
    Hour_0 = models.FloatField() 
    Hour_1 = models.FloatField() 
    for i in range(24): 
        setattr(models.Model, f'Hour_{i}', models.FloatField()) 

但这行不通。

有没有其他方法可以迭代它,或者我是否必须手动为每个 Hour_X 分配一个 FloatField?

请您参考如下方法:

Python 数据模型不够神奇,无法满足您在这里的尝试。您将必须手动分配这些字段,因为它们是在类定义时由 Model metaclass 处理的,它依赖于在类上以声明方式定义的模型字段。

您的第一种方法失败了,因为您无法在实例上设置它们。您的第二种方法失败了,因为您尝试在父 models.Model 而不是类 Trades 上设置属性。然而,您实际上不能使用名称 Trades,因为该类仍在定义中,因此名称尚未绑定(bind)。