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

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

Код отформатируйте, пожалуйста.

Если содержимое книги всё в таком ключе, как приведеный отрывок, то деньги на ветер.
Всё содержимое — в таком ключе. На мой взгляд, книга адресована начинающим знакомство с программированием в целом.
Абстрагировано от ЯП, вот такое не дотягивает до обучающего материала в 2017 году:
my_hand.add(card1)
my_hand.add(card2)
my_hand.add(card3)
my_hand.add(card4)
my_hand.add(card5)

Вам не приходило в голову, что это пример из главы про циклы?
Если в плане того, как не надо делать, да, наверное в главе про циклы ему и место.
Всё правильно.
Так делают в некоторых учебниках.
Сейчас написано так, а в следующем абзаце обучение циклу: «а теперь, дорогие дети, чтобы не писать каждый раз одно и то же, поместим карты в массив и переберем их в цикле, написав вместо 5 строк только одну my_hand.add(item)».
Вообще, «Питер» переводит хорошие книги, но форматирование кода и опечатки встречаются повсеместно. Понятно, что редактор и переводчик далеки от тематики книг, однако можно нанять человека сведующего в теме для избежания такого количества опечаток и ошибок форматирования. В англоязычных изданиях такого почти не встречается. А у нас — «и так сойдёт».
Хорошая книга, один из классических трудов. Рекомендую новичкам
Взял бы, но в электронном виде. В бумажном читать неудобно, да ещё и как-то получить надо.
За хорошую и даже среднюю книгу не жалко денег. Но в бумажном варианте вообще не вариант.
На дворе 2017 однако.
К сожалению, элеронных прав нет.
На просторах интернета есть электронные версии. Скачайте, а для успокоения души, купите бумажный вариант :))
Хорошо, с форматированием кода отступами я уже почти смирился, но объясните мне — почему метод класса объявляется с двумя параметрами
def blast(self, enemy):
а вызывается с одним:
hero.blast(invader)

И вызывается с двумя — первым аргументом передается hero.
При этом бывают и другие методы, которым не передается self.

Возможно, планировали что-то вроде
Потому что это Python — при вызове метода у объекта первым параметром всегда неявно передается ссылка на сам объект, поэтому наличие параметра self обязательно в любом методе.
Не совсем правильно. Есть еще статические и методы класса.
потому что вызов метода у объекта является вызовом метода класса, а не объекта, потому что все определения методов всё-таки хранятся у объекта-класса, а не у кождого объекта по отдельности.
class SomeClass():
    def some_method(self, param):
        pass


здесь SomeClass — это тоже объект по сути, который представляет собой описание класса, some_method — это атрибут объекта SomeClass.

создаём экземпляр класса:
var = SomeClass()


var — это тоже объект — экземпляр класса SomeClass. При этом, описание метода some_method не является атрибутом объкта var.

Вызов метода some_method происходит следующим образом:
SomeClass.some_method(var, param='value')
# по сути - мы обращаемся к атрибуту класса - определению метода, и в качестве первого агрумента передаём экземпляр класса
# эквивалентная но более простая запись этого:
var.some_method(param='value')


в питоне всё является объектами, в том числе и описания классов и их методов, и с этой точки зрения определение self-параметра не кажется чем-то странным
Первый аргумент каждого метода класса, включая __init__, всегда ссылается на текущий экземпляр класса. По соглашению этот аргумент всегда именуется self.
Хотя этот аргумент надо явно указывать при определении метода, при вызове метода его уже указывать не надо, Питон добавит его автоматически.
НЛО прилетело и опубликовало эту надпись здесь
Не отличается.
НЛО прилетело и опубликовало эту надпись здесь
ссылка на материалы не работает
Зарегистрируйтесь на Хабре, чтобы оставить комментарий