Как вернуть значение из класса?

Суть проблемы:

Допустим есть класс Ball и если он создается без атрибута name, то нужно вернуть из метода ball_type значение "regular", а если есть любое другое значение, то вывести нужно "super".

Мой код:

class Ball (object):
    name = ""

    def ball_type (self):
    
        if self.name == "":
            return regular

        else:
            return super


print (Ball ().ball_type, "regular")
print (Ball ("super").ball_type, "super")

Вывод с консоли:

TypeError: __init__() missing 1 required positional argument: 'name'

Ответы (1 шт):

Автор решения: Danis

надо добавить метод __init__ который принимает не обязательный параметр name.Но в этом случае вам надо вызвать ball_type

class Ball (object):
    def __init__(self, name = ""):
        self.name = name
        
    def ball_type (self):
        if self.name == "":
            return "regular"
        else:
            return "super"


print (Ball().ball_type(), "regular")
print (Ball("super").ball_type(), "super")

либо создавать ball_type в __init__. В этом случае вызывать не надо

class Ball (object):
    def __init__(self, name = ""):
        self.name = name
        self.ball_type = "super" if name else "regular"

print (Ball().ball_type, "regular")
print (Ball("super").ball_type, "super")
→ Ссылка