Saya sedang menulis kelas ringan yang atributnya dimaksudkan agar dapat diakses publik, dan hanya terkadang diganti dalam contoh tertentu. Tidak ada ketentuan dalam bahasa Python untuk membuat docstring untuk atribut kelas, atau atribut apa pun, dalam hal ini. Apa cara yang diharapkan dan didukung, haruskah ada, untuk mendokumentasikan atribut ini? Saat ini saya melakukan hal semacam ini:
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)
Ini akan menghasilkan docstring kelas yang berisi bagian docstring standar awal, serta baris yang ditambahkan untuk setiap atribut melalui tugas tambahan ke __doc__
.
Meskipun gaya ini tampaknya tidak dilarang secara tegas dalam pedoman gaya docstring, gaya ini juga tidak disebutkan sebagai opsi. Keuntungannya di sini adalah menyediakan cara untuk mendokumentasikan atribut bersama definisinya, sambil tetap membuat docstring kelas yang rapi, dan menghindari keharusan menulis komentar yang mengulangi informasi dari docstring. Saya masih kesal karena saya harus benar-benar menulis atribut dua kali; Saya sedang mempertimbangkan untuk menggunakan representasi string dari nilai-nilai di docstring untuk setidaknya menghindari duplikasi nilai default.
Apakah ini pelanggaran keji dari konvensi komunitas ad hoc? Apakah itu oke Apakah ada cara yang lebih baik? Misalnya, dimungkinkan untuk membuat kamus yang berisi nilai dan docstrings untuk atribut dan kemudian menambahkan konten ke kelas __dict__
dan docstring di akhir deklarasi kelas; ini akan mengurangi kebutuhan untuk mengetik nama dan nilai atribut dua kali. sunting : ide terakhir ini, saya pikir, sebenarnya tidak mungkin, setidaknya tidak tanpa secara dinamis membangun seluruh kelas dari data, yang tampaknya seperti ide yang sangat buruk kecuali ada alasan lain untuk melakukan itu.
Saya cukup baru mengenal python dan masih mengerjakan detail gaya pengkodean, jadi kritik yang tidak terkait juga diterima.
attribute doc string
disebutkan dalam PEP 257 yang tidak terkenal dan tampaknya sulit ditemukan yang mungkin menjawab pertanyaan OP, dan didukung oleh beberapa alat sumber. Ini bukan opini. Itu fakta, dan bagian dari bahasa, dan hampir persis seperti yang diinginkan OP.