网站搜索

typescript - 一般语法 Python 问题:从强类型语言到弱类型语言


我刚接触 Python 语言。我的问题当然很天真,并且涉及 Python 语法。

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

这里有一个类(一个 TypeScript 类),我想把它翻译成 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 是一种无类型语言,我对如何翻译感到怀疑:

  • 可选属性 :'?'
  • 关联的类:customFields: CustomFields;
  • 关联类的数组(自关联)且可为空:children?: Category[]|null;

直到现在,我一直使用有类型的语言工作,而仅仅什么都不写正在破坏我的习惯。

那看起来会像这样吗(这是一个用于 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?谢谢你们所有人!

答案#1

当你在 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 文档中可以找到更多与类型相关的内容,以防你可以参考文档。

答案#2

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

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

至于您给出的 Category 类的例子,ID 是自动确定的,在模型中不需要显式指定,更多信息请参见 https://docs.djangoproject.com/en/3.2/topics/db/models/