我對 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())
我得到一個型別錯誤,getType() 缺少 1 個位置引數:'self'。
uj5u.com熱心網友回復:
你應該打電話 p.getType()
p 是類的實體,而不是 Pet
uj5u.com熱心網友回復:
當您在p專案中使用變數時,listPets您也應該p在條件陳述句中使用。
替換,if Pet.getType() == "dog":用if p.getType() == "dog":
由于Pet不是類的實體,因此當您呼叫類的任何方法Pet時都會出錯。
uj5u.com熱心網友回復:
類就像一個特殊的型別。當您創建一個類時,您實際上是在創建一個附加了一些特定功能的型別。現在,您可以創建這種型別(物件)的變數并用它做一些事情。所以,當你想對你的變數(這里的物件)做一些事情時,你使用你的變數而不是型別名(例如int int)。為了讓它更清楚一點,list是一個類。假設您宣告了一個串列l = [1,2],現在將 3 附加到該串列中。你會寫l.append(3)不會list.append(3)。那是您的代碼中的錯誤,Pet.getType(). 您的變數是p,因此您必須通過pas呼叫p.getType()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369839.html
上一篇:類中的Python函式呼叫
