私有屬性,私有方法
阿新 • • 發佈:2018-11-28
如果有一個物件,當需要對其進行修改屬性時,有2種方法
物件名.屬性名 = 資料 ---->直接修改
物件名.方法名() ---->間接修改
為了更好的儲存屬性安全,即不能隨意修改,一般的處理方式為
將屬性定義為私有屬性
新增一個可以呼叫的方法,供呼叫
class People(object):
def __init__(self, name): self.__name = name def getName(self): return self.__name def setName(self, newName): if len(newName) >= 5: self.__name = newName else: print("error:名字長度需要大於或者等於5")
xiaoming = People(“dongGe”)
print(xiaoming.__name)
class People(object):
def __init__(self, name): self.__name = name def getName(self): return self.__name def setName(self, newName): if len(newName) >= 5: self.__name = newName else: print("error:名字長度需要大於或者等於5")
xiaoming = People(“dongGe”)
xiaoming.setName(“wanger”)
print(xiaoming.getName())
xiaoming.setName(“lisi”)
print(xiaoming.getName())
總結
Python中沒有像C++中public和private這些關鍵字來區別公有屬性和私有屬性
它是以屬性命名方式來區分,如果在屬性名前面加了2個下劃線’__’,則表明該屬性是私有屬性,否則為公有屬性(方法也是一樣,方法名前面加了2個下劃線的話表示該方法是私有的,否則為公有的)。
私有方法
class Dog:
def init
# 定義了一個私有屬性
self.__age = new_age
def set_age(self, new_age):
if new_age > 0 and new_age < 20:
self.__age = new_age
def get_age(self):
return self.__age
# 定義了一個私有方法
def __sit_down(self):
print("坐下了.......")
print("年齡是:%d" % self.__age)
def sit_down(self, host_name):
if host_name == "主人":
self.__sit_down() # 呼叫另外一個方法的時候,需要寫上self
wang_cai = Dog(1)
wang_cai.set_age(-2)
result = wang_cai.get_age()
print(result)
wang_cai.sit_down(“主人”)
wang_cai.sit_down(“東哥”)