SORU
16 HAZİRAN 2010, ÇARŞAMBA


Nasıl Python belge sınıfı için öznitelikleri?

Özel örneklemesi kamuya açık, ve sadece bazen geçersiz kılınması için hazırlanmış olan basit bir sınıf yazıyorum. Sınıf öznitelikleri veya öznitelikleri herhangi bir tür için docstrings oluşturmak için Python dilinde bir hüküm var, bu konuda yok. Kabul edilen şekilde olmalı, bu niteliklerin belge nedir? Şu anda bu tür bir şey 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 kütüphane ilk standart kütüphane bölümü gibi çizgiler __doc__ artırılmış atama yoluyla her öznitelik için katma içeren neden olur.

Bu tarz açıkça docstring style guidelines yasak görünmüyor olsa da, bir seçenek olarak söz değil. Burada avantaj hala düzgün bir sınıf Fibonacci Sayıları ve Fibonacci sayıları görmezden gelen bilgileri tekrar yorum yazmak zorunda oluştururken, bunların tanımları yanında öznitelikleri belgesi için bir yol sağlar. Hala aslında öznitelikleri iki kez yazmak zorunda kalıyorum bu biraz rahatsız oldum; Fibonacci sayıları değerleri dize halinde temsilini en azından varsayılan değerler tekrarını önlemek için kullanmayı düşünüyorum.

Bu ad hoc topluluk kuralları iğrenç bir ihlal mi? Tamam mı? Daha iyi bir yolu var mı? Örneğin, mümkün oluşturmak için bir sözlük içeren değerleri ve docstrings öznitelikleri ve sonra Ekle içeriğine sınıfı __dict__ ve Fibonacci sayıları sonuna doğru sınıf bildirimi; Bu hafifletmek ihtiyacı type öznitelik adları ve değerleri iki kez.editbu son fikir, bence, aslında mümkün değil, en azından olmadan dinamik yapı tüm sınıf veri, görünüşe göre gerçekten kötü bir fikir yoksa başka bir nedeni.

Python ve hala stil kodlama detayları için oldukça yeniyim, alakasız eleştirilere de açığız.

CEVAP
16 HAZİRAN 2010, ÇARŞAMBA


Karışıklığı önlemek için: dönemözellikspecific meaning python vardır. Neden bahsettiğini class attributes diyoruz. Her zaman kendi sınıfı ile üzerine hareket olduğundan, mantıklı sınıfı' doc dize. içinde onları belgelemek için yapar buluyorum Şöyle bir şey:

class Albatross(object):
    """A bird with a flight speed exceeding that of an unladen swallow.

    Attributes:
        flight_speed     The maximum speed that such a bird can attain.
        nesting_grounds  The locale where these birds congregate to reproduce.
    """
    flight_speed = 691
    nesting_grounds = "Throatwarbler Man Grove"

Bu örnekte, bir sürü yaklaşım daha gözleri daha kolay bence. Eğer gerçekten öznitelik değerleri bir kopyasını doc dize görünmesini isteseydim, ya da her öznitelik açıklama yanında aşağıda onları koymak istiyorsunuz.

Düzenleme:

Python, doktor dizeleri objeleri bir belge değil, sadece kaynak kodu açıklama gerçek bir üyesi olduğunu unutmayın. Sınıf özniteliği değişkenler nesneleri kendilerini ama başvurular nesneler değil, kendi doktor dizeleri holding haberleri yok. Sanırım senin ihtiyacın olan bir durum için doktor dizeleri başvurular, belki de tarif etmek "ne gidin burada" yerine "ne olduğunu aslında burada", ama bu benim için kolay yapabilecek kadar içinde bulunduğu sınıf doc dize.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006