Класс "Динозавр", имеющий проблемы с позиционным аргументом
Это дает мне ошибку, когда мне было указано и инициализировали переменную 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"