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

标签 python django

是否可以在 __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/

相关文章:

python - 我可以使用 Python 为所有主流浏览器开发扩展吗?

python - 如何从序列化器中的另一个模型访问外键字段

python - 在 django 项目设置中使用变量作为字典键

django - 如何获得 session 邀请以与 Gmail/Google Apps 正确集成?

django - 排除特定 HTTP 方法的 swagger 文档

python - 静态类型元编程?

python - 异步并发地播放不同音高的声音

python - 使用 MoviePy 在视频上叠加图像

python - Python-social-auth 中用户名字段的问题

python - 在 Python 中从 OrderedDict 访问数据并对其进行循环