簡體   English   中英

在類中使用私有變量創建列表

[英]Creating a list using private variables in a class

我正在創建一個名為Pet的類。 我將我的變量設為私有,因此沒有人可以修改它們(確保封裝)。 我想使用私有變量創建一個列表。 然后,我希望能夠在類調用我的pet_list列表,我將在以后使用它(我是否需要在Pet類中為我的列表創建一個 getter 來執行此操作?)。

我是 python 的新手,但我正在嘗試使用面向對象的原則進行編碼。

到目前為止,這是我的代碼。 我在想,因為我的pet變量是私有的,所以我需要使用 setter 來設置列表中的Pet 但是當我想打印set_pet() missing 1 required positional argument: 'pet'時出現此錯誤set_pet() missing 1 required positional argument: 'pet'

class Pet:
      def __init__(self, pet ):
          self.pet = pet

      def set_pet(self, pet):
         self.__pet = pet

      def get_pet(self):
         return self.__pet


#creating list

pet_list = []

p = Pet

pet_list.append(p.set_pet("cat"))
pet_list.append( Pet("dogs"))
pet_list.append( Pet("fish"))
pet_list.append( Pet("horses"))
pet_list.append( Pet("birds"))

for obj in pet_list:
    print(obj.pet)

問題在於p = Pet 在這里,您不是在初始化Pet的實例,而是將p設置為等於該類。 而是使用

p = Pet("The pet you want")

您得到錯誤set_pet() missing 1 required positional argument: 'pet'是因為"cat"作為位置參數代替self傳遞,因此就好像您只傳遞了 1 個參數。

此外, pet_list.append(p.set_pet("cat"))會將None附加到列表中,因為您只是設置屬性而不返回任何內容,所有其他的都應該按預期正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM