2015-12-14 1 views
1

Я хочу использовать то же имя класса в моем сценарии python, что и имя моего скрипта Python. Также у меня есть только один класс, присутствующий в моем скрипте. Например, если моя структура сценария упоминается ниже:Какая разница в том, чтобы использовать такое же имя класса, как имя скрипта в Python?

test.py 
    | 
    class test(object): 
    def __init__(self, var1, var2 ....): 
     ... 
     ... 

Я хочу, чтобы понять, какая разница, он будет делать, когда я импортировать этот сценарий, и использовать этот класс из другого сценария?

+6

Ничего, кроме путаницы, потому что вы не соблюдали соглашение об именах PEP-8 для классов (например, name it 'Test'). –

+0

@Martijn Pieters При написании библиотеки для Robot framework; Я видел то же имя, что и имя класса и имя файла. – pankmish

+0

Модуль ['array'] (https://docs.python.org/3/library/array.html) определяет тип [' array'] (https://docs.python.org/3/library/ array.html # array.array). –

ответ

2

Чисто с точки зрения языка, это не будет иметь никакого значения, кроме как это может вызвать небольшую путаницу с человеком, импортирующим класс.

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

Руководство пользователя robotframework есть раздел под названием Creating test library class or module который говорит (курсив мой):

классы Python являются всегда внутри модуля. Если имя класса , реализующего библиотеку, совпадает с именем модуля, Robot Framework позволяет отказаться от имени класса при импорте библиотеки. Например, класс MyLib в файле MyLib.py может использоваться как библиотека с именем MyLib. Это также работает с подмодулями, так что если для примера , модуль parent.MyLib имеет класс MyLib, импортируя его, используя только parent.MyLib работает. Если имя модуля и имя класса различны, необходимо использовать библиотеки , используя имена модулей и классов, , такие как mymodule.MyLibrary или parent.submodule.MyLib.