Я довольно новичок в python, и я читаю книгу о создании игр с pygame. Я натолкнулся на эту часть кода в книге. Я не понимаю, зачем нужен Sprite.__init__(self)
. Я запустил код с этим прокомментированным, и он работает одинаково.Для чего используется __init__?
class Creep(Sprite):
def __init__(
self, screen, img_filename, init_position,
init_direction, speed)
Sprite.__init__(self)
self.screen = screen
self.speed = speed
self.base_image = pygame.image.load(img_filename).convert_alpha()
self.image = self.base_image
Кто-нибудь есть какие-либо идеи, почему это там, и почему люди называют INIT?
Это просто специальный метод, который действует как конструктор для создания экземпляра объекта класса. (Существует даже конструктор для создания класса). Это вам не нужно, если вы этого не хотите. '' self'' - это просто название конвенции, чтобы сказать '' this''. Подумайте об этом таким образом, методы класса, такие как '' __init__'', нуждаются в ссылке на себя, и первый аргумент всегда будет '' self''. Есть исключение: staticmethod в классе. Но давайте не доберемся туда, пока вы не поймете цель init и self. – CppLearner
'Sprite (self)' будет достигнуть того же, что и 'Sprite .__ init __ (self)', но создать экземпляр для этого. Это использование немного странно, поскольку он вызывает метод '__init__', не беря полученный экземпляр. – mfitzp
Только что заметил 'класс Creep (Sprite):' - похоже, что это эквивалентно выполнению 'super (Creep, self) .__ init __()' для текущего класса. – mfitzp