Öznitelikleri herkesin erişimine açık olan ve yalnızca bazen belirli örneklerde geçersiz kılınan hafif bir sınıf yazıyorum. Python dilinde, sınıf öznitelikleri veya bu konuda herhangi bir öznitelik için belge dizileri oluşturmak için herhangi bir hüküm yoktur. Bu nitelikleri belgelemek için beklenen ve desteklenen yol nedir, bir tane olmalı mı? Şu anda şu tür şeyler yapıyorum:
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)
Bu, sınıfın ilk standart docstring bölümünü içeren docstring'in yanı sıra, her öznitelik için artırılmış atama yoluyla eklenen satırlarla sonuçlanacaktır __doc__
.
Bu tarz, ülkede açıkça yasak görünmese de docstring stil yönergelerinde de, bir seçenek olarak da belirtilmemiştir. Buradaki avantaj, tanımlarının yanında öznitelikleri belgelemek için bir yol sağlarken, yine de prezentabl bir sınıf dokümanı oluşturması ve docstring'deki bilgileri tekrarlayan yorumlar yazmak zorunda kalmamasıdır. Nitelikleri aslında iki kez yazmak zorunda olduğum için hâlâ biraz kızgınım; En azından varsayılan değerlerin tekrarlanmasını önlemek için docstring'deki değerlerin dize temsillerini kullanmayı düşünüyorum.
Bu, geçici topluluk sözleşmelerinin iğrenç bir ihlali mi? Tamam mı? Daha iyi bir yol var mı? Örneğin, öznitelikler için değerler ve belge dizgileri içeren bir sözlük oluşturmak ve ardından içeriği __dict__
sınıf bildiriminin sonuna doğru sınıfa ve docstring'e eklemek mümkündür ; bu, öznitelik adlarını ve değerlerini iki kez yazma ihtiyacını azaltacaktır. Düzenle : bu son fikir, bence, aslında mümkün değil, en azından tüm sınıfı verilerden dinamik olarak inşa etmeden mümkün değil, ki bunu yapmak için başka bir neden yoksa gerçekten kötü bir fikir gibi görünüyor.
Python'da oldukça yeniyim ve hala kodlama stilinin ayrıntıları üzerinde çalışıyorum, bu nedenle ilgisiz eleştiriler de kabul edilir.
attribute doc string
, PEP 257'de iyi bilinmeyen ve OPs sorusuna cevap verebilecek bulması zor görünen ve bazı kaynak araçları tarafından desteklenen bir sözü vardır . Bu bir fikir değil. Bu gerçektir ve dilin bir parçasıdır ve hemen hemen OP'nin istediği şeydir.