类“恐龙”的位置参数有问题

时间:2018-11-20 00:37:04

标签: python class methods setter getter

在指示和初始化变量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 :(得分:1)

您的构造函数采用一个参数:

    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

答案 1 :(得分:-1)

您可以在构造函数中添加默认值,这会使参数成为可选参数。

    let bestMoves = [
        0x1160:1,
        0x1205:0,
        0x1304:0,
        0x1340:0,
        0x1403:0,
        0x1430:0,
        0x1502:0,
        0x1520:0,
        0x1601:0,
        0x1610:1,
        0x1700:0,
        0x2222:0,
        0x2330:0,
        0x2420:0,
        0x2510:0,
        0x3140:1,
        0x3203:0,
        0x3230:0,
        0x3320:0,
        0x4103:0,
        0x4130:1,
        0x4220:0,
        0x5120:1,
        0x6101:0,
        0x6110:1 ];

然后您可以:

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"