Определение класса в Python - PullRequest
2 голосов
/ 06 мая 2011
class Car:
    pass

class Car():
    pass

В чем разница между этими двумя? и

a = Car

a = Car()

также, в чем разница между этими двумя выше?

С наилучшими пожеланиями

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

первое утверждение, a = Car просто делает a псевдонимом для Car класса.Таким образом, после того, как вы это сделаете, вы можете сделать b = a(), и это будет то же самое, что и b = Car()

. После того, как вы добавите () в конце, Python фактически инициализирует класс (либо * 1009).* или просто инициализировать, но вам не нужно об этом беспокоиться), и a становится тем, что возвращается Car(), в данном случае это экземпляр класса.

Что касается различия между class Car: и class Car():.Второй - недопустимый синтаксис (правка: до 2.5 я бы все-таки сказал, что это своего рода плохой стиль, потому что нет причин его присутствовать, если вы не наследуете).Причина, по которой у вас есть скобки, заключается в том, что вам нужно наследовать другой класс.

1 голос
/ 06 мая 2011

В первом фрагменте последний является недопустимым синтаксисом в более старых версиях Python.

Во втором фрагменте первый связывает ссылку на класс, а второй - ссылку на новый экземпляркласс.

...