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/
