Нужен ли методам экземпляра в python параметр self

#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