Класс "Динозавр", имеющий проблемы с позиционным аргументом

Это дает мне ошибку, когда мне было указано и инициализировали переменную type но я действительно не нахожу здесь никаких проблем.

Для этой задачи создайте класс Dinosaur с переменной экземпляра под названием _type,

Создайте метод получения с именем getType() который возвращает тип динозавра.

Создать метод установки с именем setType() это устанавливает его тип.

class Dinosaur:
        def __init__(self,type):
            self.type=type

        def setType(self,type):
            self.setType=type

        def getType(self):
            return self.type

# Create three dinosaurs
d1 = Dinosaur()
d2 = Dinosaur()
d3 = Dinosaur()

# Set their types
d1.setType("T-Rex")
d2.setType("Velociraptor")
d3.setType("Stegosaurus")

# Print the types
print(d1.getType())
print(d2.getType())
print(d3.getType())

2 ответа

Ваш конструктор принимает один аргумент:

    def __init__(self,type):
        self.type=type

Поэтому вы должны создавать объекты с этим аргументом:

d1 = Dinosaur('T-Rex')
...

В противном случае вы получите указанную ошибку позиционного аргумента.

Или вы можете изменить конструктор для инициализации type как пустая строка или None или похожие:

def __init__(self):
    self.type = ''  # or None

Также есть проблема с вашим сеттером, она должна быть self.type=type не self.setType=type

Вы можете добавить значение по умолчанию в вашем конструкторе, что делает ваши аргументы необязательными.

class Dinosaur:
    def __init__(self,type = None):
        self.type=type

тогда ты можешь:

>>> d1 = Dinosaur()
>>> print(d1.getType()) 
None
>>> d1.setType("T-Rex")
>>> print(d1.getType()) 
"T-Rex"

или передать аргумент:

>>> d2 = Dinosaur("Velociraptor")
>>> print(d2.getType())
"Velociraptor"
Другие вопросы по тегам