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.LambdaType: type¶
ประเภทของนิพจน์
lambdaเหมือนกันกับFunctionType
- types.BuiltinFunctionType: type¶
ประเภทของฟังก์ชัน builtin เช่น
len()และsys.exit()
- types.BuiltinMethodType: type¶
ประเภทของ bound method ของประเภท builtin (ตัวอย่างเช่น
[].append) เหมือนกันกับBuiltinFunctionType
- 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.new_class(name: str, bases: tuple = (), kwds: dict | None = None, exec_body: Callable[[dict], None] | None = None) type¶
สร้างออบเจ็กต์คลาสแบบไดนามิกในลักษณะที่สะท้อนคำสั่ง
classที่สอดคล้องกับ PEP 3115name คือชื่อของคลาสใหม่
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"ถูกลบออก