Что будет считаться лучшим стилем именования здесь? - PullRequest
1 голос
/ 17 сентября 2011

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

Это первый стиль именования, придающий всем новым атрибутам префикс sw_.

import Tkinter as tk

class New (tk.Button, object) :
    def __init__ (self, par) :
        tk.Button.__init__(self, par)

        attrnames = ['attr0', 'attr1', 'attr2', 'attr3']

        for name in attrnames :
            newname = 'sw_' + name
            setattr(self, newname, None)


root = tk.Tk()

new = New(root)
new.pack()

new.sw_attr0

root.mainloop()

Для второго стиля именования я создал все новые атрибуты атрибутов класса SW. Затем я сделал экземпляр SW атрибутом моего нового класса.

* * 1010

Ответы [ 3 ]

3 голосов
/ 18 сентября 2011

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

В Python уже есть пространство имен в качестве функции языка (с импортом), поэтому префиксы совершенно не нужны.

В вашей ситуации использование префиксов - это плохо - это означает, что вы нарушаете всю идеологию Python по типу утки и идеи объектной ориентации.Вы требуете, чтобы пользователь знал, что он использует атрибуты, добавленные вашим классом, а не изначально, что их не касается.Заставьте класс работать и избегайте лишних вещей, которые им не важны.Это просто объект.Они должны просто использовать его, не заботясь о реализации.

1 голос
/ 18 сентября 2011

Единственная рекомендация - использовать более информативные имена классов, чем SW.Гораздо лучше использовать полные слова в CapCase, см. pep 8 .

0 голосов
/ 18 сентября 2011

Не думаю, что вам нужен префикс.

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

...