Написание методов в Python 3 - Классификация животных

JD1978 спросил: 28 апреля 2018 в 08:43 в: python

Мне нужно создать класс, описывающий неизвестную расу (называемую AnimalX) вымерших животных. Каждый AnimalX может иметь или не иметь рога.

Таким образом да, я написал следующий код:

class AnimalX
    """Defines the AnimalX class.
       Data attributes: name of type str
                     height (metres) of type float
                     has_horns of type bool    
    """    def __init__(self, name, height, has_horns=False):
        """AnimalX constructor"""
        self.name = name
        self.height = height
        self.has_horns = has_horns

Это нужно, чтобы убедиться, что, когда мы не предоставляем аргумент для параметра has_horns при создании экземпляра AnimalX, его атрибут has_horns автоматически устанавливается в False.

Используя класс AnimalX, мне нужно написать два метода: p>

   say_hello(): it prints "Hi! The name is {name}!. 

Если у AnimalX есть рожки, напечатайте все кепки

   say_hello(): it prints "HI! THE NAME IS {NAME}

У меня есть базовое понимание того, как писать методы, но выше сводя меня с ума ... Мне нужен совет о том, как написать два метода выше.

 Test Case:                                       Output
  first_AnimalX = AnimalX("Jeff", 1.6)
  first_AnimalX.say_hello()                    Hi! My name is Jeff!

1 ответ

Sasha Tsukanov ответил: 28 апреля 2018 в 09:00

Вы можете получить желаемое поведение, написав только один метод:

def say_hello(self):
    phrase = 'Hi! The name is ' + self.name + '!'
    print(phrase.upper() if self.has_horns else phrase)

Я думаю, что отсутствие кода '!' в конце всей строки с шапкой была опечатка. Если нет, используйте phrase.upper()[:-1]