Я недавно узнал о функциях класса, метода и (self). Хотя я, кажется, понимаю синтаксическую сторону вещей, мне кажется, что нужно вводить [self] перед переменными, назойливыми с очень небольшим преимуществом. В каком сценарии это было бы выгодно по сравнению с просто использованием отдельных функций без ссылки на классы?Основная цель класса
ответ
В каком сценарии это будет выгодно по сравнению с просто использованием отдельных функций без ссылки на классы?
whoa ... какой вопрос! Я считаю, что вам следует начать с лекции по объектно-ориентированной программированию.
Проще говоря: преимущества использования функции class
над выполнением функций в модуле состоят в том, чтобы включить множество функций объектно-ориентированного программирования (инкапсуляция данных через поведение, наследование классов, свойства ...).
И более подробно: основная идея ООП заключается в том, что вы создаете общедоступный программный интерфейс, который будут использовать другие разработчики (включая вас), и вы можете скрыть внутреннюю работу, поэтому после того, как будет реализован общий интерфейс , вам все равно, как все работает внутри, и может даже измениться без нарушения кода, который использует это.
Итак, в этом случае вы создаете класс и реализуете свои собственные алгоритмы на своих собственных данных, но все, что действительно волнует людей, - это то, как изменить свои данные с помощью этих алгоритмов.
И эти алгоритмы называются методами и данными членами.
Во многих языках, когда вы создаете метод (т.е. функцию, привязанную к «объекту»), ссылка на текущий экземпляр объекта является неявной (и может быть явно явной в Java или C++, что представляет собой переменную this
).
В python разработчики языка выбрали для него явные и вызывают по соглашению self
. Тогда в редких случаях вы можете называть его this
, если хотите (что может быть полезно при выполнении вложенных классов).
Наконец, я говорил о «классах», «экземплярах» и «объектах». Объект является примером класс. Это означает, что класс здесь, чтобы рассказать, как все работает (каковы члены, каковы методы ...). Затем вы делаете instanciateобъект, вызывая конструктор. Итак, у вас может быть много объектов s, которые имеют один и тот же класс. Это означает, что они работают аналогично, но у них разные данные.
Но здесь я только поцарапал поверхность и хочу только показать вам, что существует множество концепций за пределами self
и class
.
Более подробную информацию о теме, идти читать книги и принимать программирования классов:
Классы - одна из основных концепций объектно-ориентированного программирования. Это хорошая идея использовать их. И 'self' ссылается на текущий экземпляр объекта. Также см. Https://en.wikipedia.org/wiki/Object-oriented_programming для общей идеи. – Freddy
Пожалуйста, обратитесь к этому вопросу: http://stackoverflow.com/questions/7721920/when-do-you-use-self-in-python –
Несомненно, синтаксис класса может быть докучливым, и он может не принести никакой пользы в небольшой программе. Но когда все усложняется, ООП - отличный способ сохранить организованность, как во время начальной разработки, так и когда вы хотите расширить программу. Вы можете найти эту статью полезной: [Почему объектно-ориентированное программирование полезно?] (Http://inventwithpython.com/blog/2014/12/02/why-is-object-oriented-programming-useful-with-an- ролевая-игры-пример). –