Алфавитные функции в классе Python - PullRequest
4 голосов
/ 16 декабря 2009

Внимание, это просто вопрос лени! По мере развития моего проекта увеличивается и количество функций в классе. У меня также есть несколько классов на файл .py. Так что я хотел бы отсортировать их так, чтобы имена функций были упорядочены [извините, Великобритания, я уже скомпрометировал в алфавитном порядке букву 'z' в алфавитном порядке ;-)].

Например, в настоящее время:

class myClass():
    stuff
    def __init__():
        do stuff
    def b():
        also do stuff
    def c():
        do other stuff
    def a():
        do even more stuff

.. и для простоты поиска я бы хотел изменить на:

class myClass():
    stuff
    def __init__():
        do stuff
    def a():
        do even more stuff         
    def b():
        also do stuff
    def c():
        do other stuff

чисто по косметическим соображениям, поскольку делает поиск соответствующих функций более интуитивным. Я бы, очевидно, хотел бы держать init () и т.д. на вершине класса.

Теперь я могу (но еще не сделал) сделать это с помощью скрипта Python, который читает в .py класс (ы), находящийся в текстовом файле, и выполняет тонну строк манипуляция. Но мне интересно, есть ли лучший способ сделать это? Возможно, есть инструмент, который я могу использовать где-нибудь? У меня была хорошая охота, но я не могу найти ничего, что мог бы использовать.

Я использую emacs, так что, возможно, есть большая 5-минутная последовательность комбинаций клавиш, которая сделает волшебство ( например ), но я ничего не вижу в режиме python!

Наконец, я хотел бы иметь возможность визуализировать и публиковать структуру классов / строки документов.

Когда я говорю «визуализировать структуру», я имею в виду, например, где myClass.a () вызывает myOtherClass.g (), это будет ссылка, поэтому я смогу увидеть, что вызывает что либо в классе - по классам (т. е. какие функции / классы использует myClass?) или в целом (вот несколько файлов, как они «соединяются»?)

Когда я говорю об опубликовании класса, я предполагаю, что имею в виду что-то вроде документации API, которую вы видите в eg1 , eg2 .

Ответы [ 2 ]

11 голосов
/ 16 декабря 2009

У меня нет решения вашего вопроса, но у меня очень твердое мнение: если число методов в ваших классах становится таким большим, что у вас возникают проблемы с их поиском, вам следует подумать об уменьшении числа, возможно, путем разделения Класс на более мелкие.

Те же принципы связности, которые применяются к функциям и методам, применимы и к классам.

4 голосов
/ 16 декабря 2009

Я не уверен, что методы сортировки по имени - отличная идея:

Это то, что вы видите при просмотре OLE-объектов, и действительно трудно что-либо понять, поскольку связанные методы повсеместны, потому что они не начинаются с одной буквы.

Я бы предпочел видеть "open" как раз перед "close", например, без всех других несвязанных методов между ...

Ваша задача - легко перечислить / просмотреть функции в вашем классе?

Вот простой трюк, который я использую в emacs:

М-х происходят

регулярное выражение: ^ * def

Дайте ему попытку ... (то же самое работает для некоторых других языков с другим регулярным выражением (например: "^ sub")

...