Задать вопрос
@Hikikomori91

ООП. Почему выводится none?

class Human:
    def __init__(self, head, body, legs):
        self.head = head
        self.body = body
        self.legs = legs

    def ChangePartHead(self, head, scrap):
        scrap.head = head


class Robot:
    head = "MetalHead"
    body = "MetalBody"
    legs = "MetalLegs"

    def ChangePartLegs(self, legs, meat):
        meat.legs = legs

obj1 = Human('FleshHead', 'FleshBody', 'FleshLegs')
obj = Robot()
print(obj1.ChangePartHead(obj1.head, obj))
print(obj.ChangePartLegs(obj.legs, obj1))


По задумке, у робота должна появиться голова человека, а у человека - ноги робота. Выводит нон, не могу понять из-за чего.
  • Вопрос задан
  • 494 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Решения вопроса 1
@CobaltTheTerrible
Копипастю код на Python
print(obj1.ChangePartHead(obj1.head, obj))

Выводит на печать то, что вернул метод ChangePartHead объект obj1. Указанный метод не возрвщает ничего, потому и выводится None.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@balamut108
Py
Чтобы корректно выводить на печать используй магические методы __repr__ и __str__, также почитай вот эту статью: habrahabr.ru/sandbox/82471
Ответ написан
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
/offtop: Рекомендую использовать ключевое слово __slots__ . Это позволит уменьшить размер объекта класса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы