Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2015 12:41:55

TohaTony
Зарегистрирован: 2015-04-05
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Наследование классов. Почему печатается None?

Объясните, пожалуйста, откуда берется и почему печатается None?

class Base(object):
    def __init__(self):
        self.x = "string"
class Derived(Base):
    def method(self):
        print(self.x)
instance = Derived()
print(instance.method())

Результат:
string
None

Хотел получить только “string”, но вдобавок получил ещё и None

Офлайн

#2 Авг. 16, 2015 12:47:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Наследование классов. Почему печатается None?

Функция (метод класса) method ничего не возвращает. В питоне любая функция возвращает значение, даже если в ней нет return или yield. Она возвращает None. Если знаете Си, то считайте, что void-функция возвращает None.
Вы выводите на консоль результат функции

print(instance.method())
получаете результат, он == None



Офлайн

#3 Авг. 16, 2015 12:52:46

TohaTony
Зарегистрирован: 2015-04-05
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Наследование классов. Почему печатается None?

FishHook
Функция (метод класса) method ничего не возвращает. В питоне любая функция возвращает значение, даже если в ней нет return или yield. Она возвращает None. Если знаете Си, то считайте, что void-функция возвращает None.Вы выводите на консоль результат функции
Понятно, спасибо.
Исправил print(self.x) на return self.x.

Офлайн

#4 Авг. 16, 2015 14:09:40

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Наследование классов. Почему печатается None?

.

Отредактировано J.R. (Фев. 27, 2016 16:28:59)

Офлайн

#5 Авг. 16, 2015 15:39:26

TohaTony
Зарегистрирован: 2015-04-05
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Наследование классов. Почему печатается None?

J.R.
Да, в этом и была моя ошибка. Я решил напечатать то, что и так напечатается при вызове метода.
А я всунул вызов метода в аргумент функции print().
print() конечно его напечатала, но затем объявилась по неизвестной мне причине None.
Зато узнал новое, про None.

То ли автору надо было чиркнуть об этом, то ли я отклоняюсь от материала со своими эксперементами “а что если так, а что если этак”?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version