types --- ชื่อสำหรับประเภทที่มีอยู่ในตัว

โมดูลนี้กำหนดชื่อสำหรับประเภทออบเจ็กต์บางอย่างที่ Python interpreter มาตรฐานใช้งาน แต่ไม่ได้เปิดเผยเป็น builtin (เช่น ประเภทของฟังก์ชันหรือ generator) พร้อมกับตัวช่วยจำนวนน้อยสำหรับการสร้างคลาสแบบไดนามิก

นี่คือ MicroPython port ของส่วนหนึ่งของโมดูล types ของ CPython โดยมีนามแฝงประเภทหลายรายการที่ไม่มีการแสดงผลที่เป็นประโยชน์ใน MicroPython (CodeType, MappingProxyType, SimpleNamespace, TracebackType, FrameType, GetSetDescriptorType, MemberDescriptorType) ถูกเปิดเผยเป็น placeholder None เพื่อให้โค้ดที่อ้างอิงเพียงแค่นั้นยังคง import ได้ แต่จะไม่จับคู่กับออบเจ็กต์จริงใดๆ ผ่าน isinstance()

ความพร้อมใช้งาน: โมดูลนี้เป็นส่วนหนึ่งของ micropython-lib โดยค่าเริ่มต้นรวมอยู่เฉพาะใน OpenMV N6 และ OpenMV AE3 สำหรับ OpenMV Cam รุ่นอื่นๆ สามารถติดตั้งด้วย mip (หรือแช่แข็งเป็น firmware ที่กำหนดเอง) ดู การจัดการแพ็กเกจ

นามแฝงประเภท

types.FunctionType: type

ประเภทของฟังก์ชันที่ผู้ใช้กำหนด และของออบเจ็กต์ที่สร้างโดยคำสั่ง def

types.LambdaType: type

ประเภทของนิพจน์ lambda เหมือนกันกับ FunctionType

types.GeneratorType: type

ประเภทของออบเจ็กต์ generator-iterator ที่ผลิตโดยฟังก์ชัน generator

types.MethodType: type

ประเภทของ bound method ของ instance คลาสที่ผู้ใช้กำหนด

types.BuiltinFunctionType: type

ประเภทของฟังก์ชัน builtin เช่น len() และ sys.exit()

types.BuiltinMethodType: type

ประเภทของ bound method ของประเภท builtin (ตัวอย่างเช่น [].append) เหมือนกันกับ BuiltinFunctionType

types.ModuleType: type

ประเภทของโมดูลที่ถูก import

types.CodeType: None

Placeholder สำหรับประเภทออบเจ็กต์ code ของ CPython ในการนำไปใช้งานนี้จะเป็น None เสมอ

types.MappingProxyType: None

Placeholder สำหรับประเภท read-only mapping proxy ที่ส่งคืนโดย type.__dict__ ใน CPython ในการนำไปใช้งานนี้จะเป็น None เสมอ

types.SimpleNamespace: None

Placeholder สำหรับคลาส types.SimpleNamespace ของ CPython ในการนำไปใช้งานนี้จะเป็น None เสมอ

types.TracebackType: None

Placeholder สำหรับประเภทของออบเจ็กต์ traceback ในการนำไปใช้งานนี้จะเป็น None เสมอ

types.FrameType: None

Placeholder สำหรับประเภทของออบเจ็กต์ frame ในการนำไปใช้งานนี้จะเป็น None เสมอ

types.GetSetDescriptorType: None

Placeholder สำหรับประเภทของ attribute descriptor ที่กำหนดโดยประเภทส่วนขยาย ในการนำไปใช้งานนี้จะเป็น None เสมอ

types.MemberDescriptorType: None

Placeholder สำหรับประเภทของ slot descriptor ที่กำหนดโดยประเภทส่วนขยาย ในการนำไปใช้งานนี้จะเป็น None เสมอ

ฟังก์ชัน

types.new_class(name: str, bases: tuple = (), kwds: dict | None = None, exec_body: Callable[[dict], None] | None = None) type

สร้างออบเจ็กต์คลาสแบบไดนามิกในลักษณะที่สะท้อนคำสั่ง class ที่สอดคล้องกับ PEP 3115

  • name คือชื่อของคลาสใหม่

  • bases คือ tuple ของคลาสพื้นฐาน

  • kwds คือ dict ของอาร์กิวเมนต์คีย์เวิร์ดที่จะส่งไปยัง metaclass โดยคีย์ "metaclass" หากมีอยู่จะเลือก metaclass โดยตรง

  • exec_body คือ callable ที่ไม่บังคับซึ่งจะถูกเรียกพร้อมกับ namespace ของคลาสที่เพิ่งเตรียมใหม่ โดยควรเติมข้อมูลด้วย attribute ของคลาสใหม่

คืนค่าคลาสที่สร้างขึ้นใหม่

types.prepare_class(name: str, bases: tuple = (), kwds: dict | None = None) tuple[type, dict, dict]

คำนวณ metaclass ที่เหมาะสมและเตรียม namespace สำหรับคลาสใหม่

  • name คือชื่อของคลาสที่กำลังจะสร้าง

  • bases คือ tuple ของคลาสพื้นฐาน

  • kwds คือ dict ของอาร์กิวเมนต์คีย์เวิร์ด โดยคีย์ "metaclass" หากมีอยู่จะถูกลบออกจาก kwds ที่ส่งคืนและใช้เป็น metaclass มิฉะนั้น metaclass ของ bases[0] จะถูกใช้ โดย fallback ไปที่ type

คืนค่า 3-tuple (metaclass, namespace, kwds) โดย namespace คือผลลัพธ์ของการเรียก metaclass.__prepare__ หากกำหนดไว้ หรือ dict ว่างเปล่าในกรณีอื่น และ kwds คือสำเนาของ input ที่มีรายการ "metaclass" ถูกลบออก