Как стать автором
Обновить

Объектно-ориентированное программирование в размышлениях и опытах хоккеиста Степана Осечкина

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров13K
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

Комментарии 5

А вот если бы было не Степана Осечкина, а Владимира Ильича Ленина (или Леонида Брежнева даже, во!) - то было бы смешнее, а значит, лучше бы запомнилось.

Ленин синглтоновый

Спасибо за обратную связь! Подмечено верно, метафоры и примеры из жизни часто вызывают эмоции, создавая эмоциональную связь с материалом. Это помогает увлечь читателя и заинтересовать его. Кроме того, часто бывает проще запомнить информацию, если она представлена в виде истории или примера. Метафоры и живые примеры помогают информации "застревать" в памяти.
В своих уроках я всегда стараюсь использовать подобные приёмы, особенно когда нужно объяснить сложные сущности простым языком. Но везде важен баланс. Если образ будет очень ярким, либо если будет использовано избыточное количество метафор, то иногда этим можно больше навредить, чем помочь - это может сбить с толку или отвлечь читателя.

Приведен очень хороший пример для начинающих, чтоб понять ООП, поделюсь с детьми.

В целом неплохой пост для начинающих, но все типичные и досадные неточности, которые живут годами, и некритично копипастятся техническими писателями этого жанра и тут живее всех живых.

Так, например функция написанная внутри класса, как таковая, связана с этим классом лишь пространством имен(префиксом имени класса в "точечной нотации", при ее вызове вне класса), аналогично, например функции из импортированного модуля( тут префиксом имени модуля в "точечной нотации"). Методом класса/экземпляра функция будет лишь если первым(или неявным) аргументом ей будут переданы соответствующие ссылки на класс и экземпляр и не более того.

Отсюда следует и(легко проверяется на практике, которая и есть критерий истины), что оба варианта кода написанные внутри класса HockeyPlayer

    # Статический метод:    
    @staticmethod
    def get_greeting():
        return 'Привет, хоккеист!'

и

    # Декоратор @staticmethod не применяется
    def get_greeting():
        return 'Привет, хоккеист!'

На вызов вне класса

print(HockeyPlayer.get_greeting())

Отреагируют одинаково и без ошибок: Привет, хоккеист!

Излагать основы, совсем не то, что излагать ошибки. Тем более в тексте для начинающих. Если функции передаются еще и "обычные аргументы" это дела не поменяет.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий