#python #class #methods
#python #класс #методы
Вопрос:
Я создаю простую платформерную игру и использую collided_left
метод из моего Coords
класса в моем Sprite
классе. У меня есть атрибут в Sprite
классе, который создает объект в Coords
классе, но у collided_left
метода нет параметра self, поэтому, когда я пытаюсь вызвать его в своем Sprite
классе, я получаю name 'collided_left' is not defined
ошибку. Могу ли я что-нибудь сделать для вызова метода без добавления атрибута self?
Комментарии:
1. Почему бы просто не добавить
self
параметр?2. Это описано в любом руководстве по классам и методам. По дизайну и определению, а метод экземпляра начинается с параметра экземпляра.
3. Не могли бы вы также показать нам несколько фрагментов кода, чтобы мы могли лучше вас понять?
Ответ №1:
Нужен ли методам экземпляра в python параметр self
ДА. Существует три типа метода: метод экземпляра, метод класса и статический метод. Метод экземпляра — это метод, который предназначен для внесения некоторых изменений в экземпляр или для вызова другого метода экземпляра. Следовательно, метод экземпляра ДОЛЖЕН иметь параметр self.
Могу ли я что-нибудь сделать для вызова метода без добавления атрибута self?
Вы можете преобразовать метод в статический метод. Статический метод — это метод, который не предназначен для внесения каких-либо изменений в какой-либо класс экземпляра или вызова других методов экземпляра. Следовательно, вам не нужно передавать параметр self.
Если вы хотите объявить статический метод, вам просто нужно обернуть его встроенным staticmethod
. Вот пример:
&&t;&&t;&&t; class ThisIsClass():
@staticmethod
def your_method_name(a, b):
return a b
&&t;&&t;&&t; instance = ThisIsClass()
&&t;&&t;&&t; instance.your_method_name(1, 2)
3