Python: return в методах
В чем разница между методом класса, который содержит return, и в котором return не содержится? Например:
class SomeClass():
def __init__(self, name, level):
...
self.level = level
def levelUp(self, level_plus):
self.level = self.level + level_plus
return self.level
def info(self):
print("Name is: ", self.name)
print("Level is: ", self.level)
rSomeClass = SomeClass("Red", 34)
rSomeClass.levelUp(14)
rSomeClass.info()
и
class SomeClass():
def __init__(self, name, level):
...
self.level = level
def levelUp(self, level_plus):
self.level = self.level + level_plus
def info(self):
print("Name is: ", self.name)
print("Level is: ", self.level)
rSomeClass = SomeClass("Green", 16)
rSomeClass.levelUp(32)
rSomeClass.info()
В обоих примерах кода переменная экземпляра изменила свое значение. Но есть ли неочевидные отличия между ними? Заранее спасибо.
Ответы (2 шт):
Return есть у любой функции. Просто если он явно не задан, то возвращается None. А так вы можете возвращать нужные вам значения. Других отличий нет.
Отличие в том, что в одном случае в результате выполнения функции возвращается значение, которое можно использовать в коде. В случае, когда функция не содержит return
- она возвращает None
по умолчанию.
У вас функция levelUp может быть использована так:
print('Поздравляем с получением уровня', rSomeClass.levelUp(32)) # такое невозможно без использования return
В одну строку и уровень увеличили, и текущий уровень смогли отобразить.
Грамотное использованиеreturn
позволяет банально уменьшить количество кода.