一般语法 python 问题:从类型化语言到非类型化语言

General syntax python question : from typed language to untyped one

我是 python 语言的新手。 我的问题当然是一个天真的问题,并且涉及 python 语法。

我正处于必须从理论走向实践的阶段

这是一个 class(打字稿),我想翻译成 python 语言。

class Category {
    id: number;
    type: 'shop'|'blog';
    name: string;
    slug: string;
    path: string;
    image: string|null;
    items: number;
    customFields: CustomFields;
    parents?: Category[]|null;
    children?: Category[]|null;
}

因为 python 是无类型语言我对如何翻译有疑问:

直到现在我一直使用打字语言工作,这破坏了我什么都不写的习惯。

看起来像这样吗(它是 django.db 迁移的模型):

>from django.db import models

    >>class Category(models.Model):
    >>>    id = models.AutoField(primary_key=True)
    >>>   type: 'shop'|'blog'
    >>>    name = models.CharField(max_length=100)
    >>>    slug = models.CharField(max_length=100)
    >>>    path = models.CharField(max_length=250)

然后……?

您能否也提供一些您在实践中学习 python 的教程、文档和示例? 谢谢大家!

如果您必须强制输入 Python 代码,请输入 look at isinstance
对于 Python 中的可选 Class 属性,您可以使用关键字参数作为 shown in this answer.

最好按照它的文档来学习这门语言,文档中有足够的示例。 https://docs.python.org/3/

如果你想学习Django,教程还是挺多的。但首先,请看这里。 https://docs.djangoproject.com/en/3.2/

关于您的类别示例 Class id 是自动确定的,不需要在模型中显式指定,查看更多https://docs.djangoproject.com/en/3.2/topics/db/models/

当您在 Python 中定义函数时,您可以强制执行静态类型,但这不是必需的。如果您需要强制执行静态类型,您可以这样做。

//for functions
def addition(a: int, b: int) -> int:
    return a + b
addition(4,10)

//For Variables or attributes
name: str = 'test'
age: int = 10
rating: float = 1.11
is_exist: bool = True

在 python 文档中找到了更多与输入有关的内容,以防万一 你可以参考documentation.