ฉันกำลังเขียนคลาสที่มีน้ำหนักเบาซึ่งมีแอตทริบิวต์ที่ตั้งใจให้สามารถเข้าถึงได้แบบสาธารณะและบางครั้งจะถูกแทนที่ในการโต้ตอบที่เฉพาะเจาะจงเท่านั้น ไม่มีข้อกำหนดในภาษา Python สำหรับการสร้าง docstrings สำหรับแอตทริบิวต์คลาสหรือแอตทริบิวต์ประเภทใด ๆ สำหรับเรื่องนั้น วิธีที่คาดหวังและได้รับการสนับสนุนควรมีวิธีใดในการบันทึกแอตทริบิวต์เหล่านี้ ตอนนี้ฉันกำลังทำสิ่งนี้:
class Albatross(object):
"""A bird with a flight speed exceeding that of an unladen swallow.
Attributes:
"""
flight_speed = 691
__doc__ += """
flight_speed (691)
The maximum speed that such a bird can attain.
"""
nesting_grounds = "Raymond Luxury-Yacht"
__doc__ += """
nesting_grounds ("Raymond Luxury-Yacht")
The locale where these birds congregate to reproduce.
"""
def __init__(self, **keyargs):
"""Initialize the Albatross from the keyword arguments."""
self.__dict__.update(keyargs)
ซึ่งจะส่งผลใน docstring ชั้นที่มีการเริ่มต้นส่วน docstring __doc__
มาตรฐานเช่นเดียวกับเส้นเพิ่มสำหรับแต่ละแอตทริบิวต์ผ่านที่ได้รับมอบหมายในการเติม
แม้ว่าสไตล์นี้จะไม่ได้รับการห้ามโดยชัดแจ้งในหลักเกณฑ์สไตล์ docstringแต่ก็ไม่ได้ระบุไว้เป็นตัวเลือก ข้อดีคือมีวิธีการจัดทำเอกสารแอตทริบิวต์ควบคู่ไปกับคำจำกัดความในขณะที่ยังคงสร้าง docstring คลาสที่นำเสนอได้และหลีกเลี่ยงการเขียนความคิดเห็นที่ย้ำข้อมูลจาก docstring ฉันยังรำคาญที่ต้องเขียนแอตทริบิวต์สองครั้ง ฉันกำลังพิจารณาใช้การแสดงสตริงของค่าใน docstring เพื่อหลีกเลี่ยงการซ้ำซ้อนของค่าเริ่มต้น
นี่ถือเป็นการฝ่าฝืนอนุสัญญาชุมชนเฉพาะกิจอย่างชั่วร้ายหรือไม่ จะเป็นไรไหม? มีวิธีที่ดีกว่า? ตัวอย่างเช่นเป็นไปได้ที่จะสร้างพจนานุกรมที่มีค่าและ docstrings สำหรับแอตทริบิวต์จากนั้นเพิ่มเนื้อหาลงในคลาส__dict__
และ docstring ในตอนท้ายของการประกาศคลาส สิ่งนี้จะช่วยบรรเทาความจำเป็นในการพิมพ์ชื่อและค่าแอตทริบิวต์สองครั้ง แก้ไข : ความคิดสุดท้ายนี้คือฉันคิดว่าเป็นไปไม่ได้จริงอย่างน้อยก็ไม่ได้หากไม่มีการสร้างคลาสทั้งหมดจากข้อมูลแบบไดนามิกซึ่งดูเหมือนจะเป็นความคิดที่ไม่ดีจริงๆเว้นแต่จะมีเหตุผลอื่นให้ทำเช่นนั้น
ฉันค่อนข้างใหม่สำหรับ python และยังคงหารายละเอียดของรูปแบบการเขียนโค้ดอยู่จึงยินดีต้อนรับคำวิจารณ์ที่ไม่เกี่ยวข้อง
attribute doc string
กล่าวถึงในPEP 257ซึ่งไม่เป็นที่รู้จักกันดีและดูเหมือนจะหายากซึ่งอาจตอบคำถาม OPs และได้รับการสนับสนุนโดยเครื่องมือต้นทางบางอย่าง นี่ไม่ใช่ความเห็น มันเป็นความจริงและเป็นส่วนหนึ่งของภาษาและค่อนข้างตรงกับสิ่งที่ OP ต้องการ