класс "Динозавр", имеющий проблемы с позиционным аргументом - PullRequest
0 голосов
/ 20 ноября 2018

Это дает мне ошибку, когда мне было указано и инициализировано переменная 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 ]

0 голосов
/ 20 ноября 2018

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

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"
0 голосов
/ 20 ноября 2018

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

    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

...