是否可以在 __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)。
关于python - 迭代并设置类属性 - Python Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50745334/