Python:学习类,在类列表中缺少位置参数



我是Python的新手,在类方面遇到了困难。我创建了一个具有名称和类型属性的类Pet。

class Pet:
def __init__(self, name, type):
self.name = name
self.type = type
def getName(self):
return self.name
def getType(self):
return self.type
def setName(self, name):
self.name = name
def setType(self, type):
self.type = type
def print(self):
print("{} is a {}".format(self.name, self.type))

我创建了实例?并将它们附加到列表中。

listPets = []
pet1 = Pet("Hobo", "dog")
pet2 = Pet("Pal", "dog")
pet3 = Pet("Meow", "cat")
listPets.append(pet1)
listPets.append(pet2)
listPets.append(pet3)

我的主要目标是打印宠物狗的名字。

for p in listPets:
if Pet.getType() == "dog":
print(p.getName())

我得到一个TypeError,getType((缺少1个位置参数:"self"。

您应该调用p.getType()

p是类的实例,而不是Pet

当您对listPets中的项使用p变量时,您也应该在条件语句中使用p

if Pet.getType() == "dog":替换为if p.getType() == "dog":

由于Pet不是类的实例,所以当您为Pet调用类的任何方法时,它都会出错。

class就像一个特殊的类型。当你创建一个类时,你本质上是在创建一个附加了一些特定函数的类型。现在,你可以制作这种类型的变量(对象(并用它做一些事情。所以,当你想用你的变量(这里的对象(做一些事情时,你可以使用你的变量,而不是类型名(例如int + int(。更清楚地说,list是一个类。比方说,您声明了一个列表l = [1,2],现在将3附加到该列表中。你应该写l.append(3)而不是list.append(3)。这就是您的代码Pet.getType()中的错误。您的变量是p,因此,您必须将p调用为p.getType()

最新更新