Я новичок в Python и пытаюсь понять классы.
Насколько мне известно, когда вы создаете класс, вы должны вставить self перед переменной, так что self заменяется экземплярами, когда они создаются (они становятся атрибутами экземпляра). Помимо атрибутов экземпляра, существуют также атрибуты класса, которые определяются в верхней части класса перед любыми методами.
Однако я наткнулся на этот код:
class Hero:
def __init__(self, name):
self.name = name
self.health = 100
def eat(self, food):
if food == 'apple':
health += 20
elif food == "chocolate":
health -= 10
Почему у еды нет «я»? Это не атрибут экземпляра, но мне тоже не кажется, что это атрибут класса .. Я использую python 2.X
food
является параметром метода, а не атрибутом класса / экземпляра; он передается, напримерHero('Hercules').eat('apple')
. Этот метод вообще не относится кself
, поэтому может быть@staticmethod
. - person jonrsharpe   schedule 05.11.2015