迭代并设置类属性Python Djang

2024-04-20 12:22:24 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在__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?你知道吗


Tags: 函数inselfformodel属性initmodels
1条回答
网友
1楼 · 发布于 2024-04-20 12:22:24

Python数据模型还不够神奇,不足以允许您在这里尝试什么。您必须手动分配这些字段,因为它们在类定义时由Model metaclass处理,并且依赖于在上以声明方式定义的模型字段。你知道吗

第一种方法失败,因为无法在实例上设置它们。第二种方法失败,因为您试图在父级models.Model而不是类Trades上设置属性。但是,实际上不能使用名称Trades,因为类仍在定义中,因此名称尚未绑定。你知道吗

相关问题 更多 >