【问题标题】:How to specify typings for dynamic fields similar to django Model/Field?如何为类似于 django 模型/字段的动态字段指定类型?
【发布时间】:2018-08-13 21:42:43
【问题描述】:

例如:

# field base class
class F:
    pass


# represent integer
class AF(F):
    pass


# represent string
class BF(F):
    pass


class M:
    a = AF()
    b = BF()

    def __init__(self):
        pass  # generate dynamic attrs based on specified static attrs


m = M()
# m.a should have inferred type integer

也许它只是带有所有这些类型提示的 IDE (PyCharm) 功能,并且此功能硬绑定到 django 的 Model 类?

【问题讨论】:

    标签: python django pycharm


    【解决方案1】:

    Django 的 Model 类具有显式检查字段类型以及数据库迁移以将这些类型添加到数据库的字段。如果您想在 python 中使用静态类型,请考虑使用MyPy 来注释您的函数和变量。

    【讨论】:

    • 用于静态分析我对打字+pycharm很满意(不知道pycharm在后台使用什么)。但我想知道是否有办法动态注释属性。到目前为止,唯一知道的方法是添加带有类型的命令,例如# type: str
    • 如果您使用的是 Python 3.6,则可以使用以下注释:x:int 或 x:str 或 x:Union[int, str] 如下所示:mypy.readthedocs.io/en/latest/cheat_sheet_py3.html 和 PyCharm 将识别它们
    猜你喜欢
    • 2019-06-18
    • 2014-11-11
    • 1970-01-01
    • 2012-01-06
    • 2011-12-17
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多