มา Document สำหรับ Class Module ใน Python เพื่อใช้งานในทีมกัน ด้วย pdoc

หลายท่าน น่าจะเคยเจอปัญหา ในการต้องมาอธิบายให้เพื่อนร่วมทีมฟัง ถึงวิธีใช้งาน บาง Function หรือ Class Module ที่เราหรือเพื่อนร่วมทีมเขียน Code ไว้ แม้บางครั้งเราจะเขียน String Doc (__doc__ หรือ docstring) ใน Python ไว้แล้วก็ตาม ดังภาพตัวอย่างด้านบน

ก็มักจะเจอปัญหา เพื่อนร่วมทีมยังหาวิธีใช้งานยาก หรือไม่รู้ว่ามี Function หรือ Class นั้นๆอยู่ หรือเจอปัญหา เมื่อมีเพื่อร่วมทีม เข้ามาใหม่ ก็ต้องมานั่งอธิบาย วิธีใช้งานกันเป็นวันๆ หรือ 2-3 วันเลยทีเดี่ยว ซึ่งเอาจริงๆแล้ว สิ่งที่เราอธิบายไปนั้น แน่นอนว่า เพื่อนร่วมทีมเรา มักจะจำกันไม่ค่อยได้

จะดีกว่าไหม ถ้าเรามี HTML Document แบบนี้

https://back-dev-docs.web.app/

เอาละมาเริ่มกันแบบจริงจังชักที สมุดว่าเรามี โครงสร้าง โปรเจ็คประมาณนี้

.
└── project/
├── docs/
│ ├── …
│ ├── index.html
│ └── …
├── shared_library_python/
│ └── python/
│ ├── …
│ ├── Connection.py
│ ├── CRUDModel.py
│ ├── EnvModel.py
│ └── …
└── document.py

และมีเขียน String Doc (__doc__ หรือ docstring) ใน Python ไว้แล้ว ดังภาพ

เราจะสามารถใช้ Code ต่อไปนี้ในการสร้าง HTML Document ได้ทันที

pip install pdoc
#!/usr/bin/env python

import glob
import json
import os
from datetime import datetime

vvvvv = datetime.now().strftime('%Y-%m-%d')
"""
Generate the code documentation, using pydoc.
"""

docs_folder = f"docs_{vvvvv}"
ignored_files = ["MongoDBEngine.py"]
module_list = []
for dirname in ['shared_library_python/python/']:
    flist = glob.glob(f'{dirname}/*.py')
    for fname in flist:
        if '__init__' not in fname and fname not in ignored_files and "EX_" not in fname:
            module_list.append(fname)
            bname = os.path.splitext(os.path.basename(fname))[0].lower()


    os.system(f'python3.8 -m pdoc -d google -o {docs_folder} -e module={json.dumps(module_list)}')

ตัวอย่าง การเขียน String Doc (__doc__ หรือ docstring) ใน Python

ลองสร้างไฟล์ demo.py และใส่ Code ด้านล่างลงไป จากนั้น เรียกใช้คำสั่งต่อไปนี้ดูครับ

pdoc demo.py

ไฟล์ demo.py

"""
A small `pdoc` example.
"""

class Dog:
    """🐕"""
    name: str
    """The name of our dog."""
    friends: list["Dog"]
    """The friends of our dog."""

    def __init__(self, name: str):
        """Make a Dog without any friends (yet)."""
        self.name = name
        self.friends = []

    def bark(self, loud: bool = True):
        """*woof*"""

ดูการใช้งานเพิ่มเติมได้ที่เว็บไชต์

https://pdoc.dev/

Read more

เปิดมุมมองใหม่ของ "กระปุก": จากเรื่องราวของน้องฟ้า สู่ความหวังและชีวิตใหม่

เปิดมุมมองใหม่ของ "กระปุก": จากเรื่องราวของน้องฟ้า สู่ความหวังและชีวิตใหม่

เจาะลึกเรื่องราวของ "น้องฟ้า" เหยื่อถูกทารุณกรรม สู่การศัลยกรรม 4 ปี โดยการช่วยเหลือจากหนุ่ม กรรชัย พร้อมเบื้องหลังภาพหล่อเหลาและความหวังใหม่ที่บ้าน

By ทีมงาน devdog
อัปเดตด่วน! Apple เตรียมปล่อย iOS 26.4.1 ให้ iPhone แก้ไขบัคและเสริมความปลอดภัยเร่งด่วน

อัปเดตด่วน! Apple เตรียมปล่อย iOS 26.4.1 ให้ iPhone แก้ไขบัคและเสริมความปลอดภัยเร่งด่วน

Apple เตรียมปล่อยอัปเดต iOS 26.4.1 เพื่อแก้ไขข้อบกพร่องและเสริมความปลอดภัยเร่งด่วนบน iPhone รับมือช่องโหว่จากแฮกเกอร์ อ่านรายละเอียดและวิธีป้องกันได้ที่นี่

By ทีมงาน devdog
อัปเดตใหม่ S26 มาอย่างไว! แต่บั๊กในตำนานยังไม่หาย?

อัปเดตใหม่ S26 มาอย่างไว! แต่บั๊กในตำนานยังไม่หาย?

อัปเดตใหม่ Samsung Galaxy S26 มาพร้อมการสนับสนุน 7 ปี แต่อุปกรณ์เก่าจะหยุดอัปเดตในปี 2026 พร้อมช่องโหว่ความปลอดภัยที่ยังค้างคา! ต้องอัปเกรดไหม?

By ทีมงาน devdog
ประเทศไทย: จุดศูนย์กลางเทศกาลระดับโลกและบทบาทสำคัญในภูมิภาค

ประเทศไทย: จุดศูนย์กลางเทศกาลระดับโลกและบทบาทสำคัญในภูมิภาค

เจาะลึกประเทศไทย! สัมผัสความยิ่งใหญ่ของสงกรานต์ 2569 ที่ Iconsiam, ถนนข้าวสาร, สีลม และทั่วประเทศ พร้อมบทบาทสำคัญในการขับเคลื่อนเศรษฐกิจภูมิภาค

By ทีมงาน devdog