1. 程式人生 > >私有屬性,私有方法

私有屬性,私有方法

如果有一個物件,當需要對其進行修改屬性時,有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, new_age):
# 定義了一個私有屬性
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(“東哥”)