@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))


По задумке, у робота должна появиться голова человека, а у человека - ноги робота. Выводит нон, не могу понять из-за чего.
  • Вопрос задан
  • 489 просмотров
Решения вопроса 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__ . Это позволит уменьшить размер объекта класса.
Ответ написан
Ваш ответ на вопрос

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

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