ค้นหาเว็บไซต์

typescript - คำถามทั่วไปเกี่ยวกับไวยากรณ์ของ 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;
  • อาร์เรย์ของคลาสที่เกี่ยวข้อง (ที่เกี่ยวข้องกับตัวเอง) และสามารถเป็นค่า null ได้: 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 รหัสจะถูกกำหนดโดยอัตโนมัติและไม่จำเป็นต้องระบุอย่างชัดเจนในโมเดล ดูเพิ่มเติมได้ที่ https://docs.djangoproject.com/en/3.2/topics/db/models/