-3
我是OOP的新手,這是我創建Python類的第一步。我試圖讓我的3個變量是私人的,所以只有方法更新信息(強制封裝)。看起來,如果我從我的類中移除setter和getters方法,它對我的代碼沒有影響(必須是執行此工作的初始化方法?)。我能做些什麼來改善這一點?謝謝。Python類和封裝方法
編輯 - 我更新了我的代碼並刪除了init。我的吸氣人員現在不工作。
#Instantiate a new Pet Instance.
myPet = Pet()
#Get input from user.
myPet.setName = input("Enter the pet's name: ")
myPet.setTypes = input("Enter the pet's type (Dog, Cat, Bird, etc.): ")
myPet.setAge = input("Enter the pet's age (in years): ")
while myPet.setAge.isalpha():
print()
print("Age cannot contain numbers. Try again.")
myPet.setAge = input("Enter the pet's age (in years): ")
#Call the showPetInfo module using new instanced object.
myPet.showPetInfo()
class Pet:
#Fields of the Pet Class.
__PetName = ""
__PetType = ""
__PetAge = ""
#Setter methods.
def setName(self,name):
self.__PetName = name
def setTypes(self,types):
self.__PetType = types
def setAge(self,age):
self.__PetAge = age
#Getter methods.
@property
def getName(self):
return self.__PetName
@property
def getType(self):
return self.__PetType
@property
def getAge(self):
return self.__PetAge
def showPetInfo(self):
print("\n \n \n \n")
print("Here is your pet's information. Your pet's name is {}, it is a {} and it is {} years old.".format(self.getName,self.getType,self.getAge))
main()
這個問題會更適合要求在HTTPS對象狀態的另一部分://codereview.stackexchange .com/ – Duncan
你通常不需要或想要Python中的getter和setter。你也不應該在課堂上設定這些屬性;只在'__init__'中定義它們。不要使用雙下劃線前綴,除非您完全知道*您正在做什麼(甚至可能不是)。最後,方法名稱的Python風格是'lower_case_with_underscores',而不是'camelCase'。 –
_「如果我從我的類中刪除了setters和getters方法,它對我的代碼沒有影響」_因爲你從不使用它們。 –