Найти - Пользователи
Полная версия: Наследование классов. Почему печатается None?
Начало » Центр помощи » Наследование классов. Почему печатается None?
1
TohaTony
Объясните, пожалуйста, откуда берется и почему печатается 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
FishHook
Функция (метод класса) method ничего не возвращает. В питоне любая функция возвращает значение, даже если в ней нет return или yield. Она возвращает None. Если знаете Си, то считайте, что void-функция возвращает None.
Вы выводите на консоль результат функции
print(instance.method())
получаете результат, он == None
TohaTony
FishHook
Функция (метод класса) method ничего не возвращает. В питоне любая функция возвращает значение, даже если в ней нет return или yield. Она возвращает None. Если знаете Си, то считайте, что void-функция возвращает None.Вы выводите на консоль результат функции
Понятно, спасибо.
Исправил print(self.x) на return self.x.
J.R.
.
TohaTony
J.R.
Да, в этом и была моя ошибка. Я решил напечатать то, что и так напечатается при вызове метода.
А я всунул вызов метода в аргумент функции print().
print() конечно его напечатала, но затем объявилась по неизвестной мне причине None.
Зато узнал новое, про None.

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

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB