2013-06-25 2 views
9

Я всегда оставляю пустую строку после определения класса, и код кажется совместимым с PEP8, поскольку для этого не возникает никаких предупреждений. Я делаю это, потому что нашел его более читаемым, чем писать все вместе.Пустая строка Python PEF8 лучшая практика в определении класса

class Area(BaseModel): 

    name = models.CharField(_("Name"), max_length=30) 
    slug = models.SlugField(_("Slug"), max_length=30, unique=True) 

    class Meta(BaseModel.Meta): 

     verbose_name = _("Area") 
     verbose_name_plural = _("Areas") 
     ordering = [ 
      "name", 
     ] 

Однако, когда я читаю код PEP8, совместимый. Это дополнительное пространство никогда не бывает там, и этот код будет выглядеть следующим образом:

class Area(BaseModel): 
    name = models.CharField(_("Name"), max_length=30) 
    slug = models.SlugField(_("Slug"), max_length=30, unique=True) 

    class Meta(BaseModel.Meta): 
     verbose_name = _("Area") 
     verbose_name_plural = _("Areas") 
     ordering = [ 
      "name", 
     ] 

Мой вопрос: Является ли, что «плохая практика», что я делаю. Должен ли я избегать лишних пустых строк в Python?

+0

Ну, для начала у вас нет доктрины. Как я это делаю, если мой doctext - всего одна строка, я не включаю пустую строку. Если doctext является многострочным, я добавляю пустую строку. – TyrantWave

+0

@TyrantWave, поэтому, если у вас нет doctext или у вас есть только одна строка, вы не оставите пустую строку. Иначе у вас есть пустая строка. Есть ли какое-либо соглашение для этого? Я уже видел, что вы говорите. – Caumons

ответ

9

Это действительно вопрос вкуса. Я лично включаю пустую строку, которая должна состоять из классов, которые имеют docstring. Цитирование PEP-0257:

Вставьте пустую строку до и после того, как все строк документации (одна линии или несколько строк), что документ класса - вообще говоря, методы в классе отделяются друг от друга одной пустой строкой, и docstring должен быть смещен от первого метода пустой строкой; для симметрии поместите пустую строку между заголовком класса и docstring.

Для иллюстрации:

class WithoutDocString(object): 

    def __init__(self): 
     pass 


class WithADocString(object): 

    """Summary line. 

    Bla bla bla bla. 
    """ 

    def __init__(self): 
     pass 
+3

На самом деле любопытно, что в указанной вами ссылке вы можете найти свое объяснение, но в своих примерах они не следуют за ним! Если вы понимаете, они пишут все вместе: определение метода, docstring и код. Поэтому я думаю, что это действительно вопрос вкуса, и он по-прежнему совместим с PEP8. – Caumons

+0

PEP не показывает пример определения класса, только функции :( – icecrime

+0

При работе с функциями и методами вы оставляете пустые строки при наличии docstrings? Как говорится в 'all docstrings' ... – Caumons

1

Как я понимаю blank line section of PEP-8, есть некоторая свобода в этом вопросе. Пустые строки могут появляться в некоторых местах (разделяя группы связанных функций) и могут быть опущены в других местах (для группировки списка однострочных).

Нет свободы, однако, о пустых строках после заголовков определения. Они не должны появляться в соответствии с правилами PEP-8.

Ваш контролер соответствия PEP-8, похоже, не проверяет это.

Как правило, (не связанный с PEP-8), я чувствую, что пустые строки, как и многие другие проблемы с форматированием, являются вопросом того, к чему вы привыкли. Нет никаких научных исследований, которые я знаю об этом показе, которое лучше всего подходит для беспристрастных разработчиков. И большинство из нас все равно предвзято, так что даже это, вероятно, будет означать не очень много.

При редактировании существующего кода мой основной подход всегда заключается в том, чтобы придерживаться существующего форматирования. Но это не относится к делу ;-)

+0

Я использую Pydev в Eclipse с включенной проверкой PEP8. Я уже прочитал раздел пустой строки, и ничего не написано о том, что я спросил здесь. Но в ответе @ icecrime, похоже, ответили. – Caumons