日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python屬性私有化詳解_python

作者:HaiFan. ? 更新時間: 2023-04-17 編程語言

前言

在做程序的過程中,有時候程序猿不想讓外人動一些值,這個時候,就可以考慮把一些變量進行私有化

__屬性:就是將屬性私有化,訪問范圍僅僅限于類中。

私有化屬性

私有化屬性只需要以雙下劃線開頭,聲明該屬性為私有屬性即可,聲明之后就不能在類外部使用或直接訪問。

class Student:
    __age = 10
a = Student()
print(a.__age)

私有化屬性的有三個特性:

  • 不能在類外面訪問
  • 可以在類里面訪問,修改
  • 子類不能繼承私有化屬性

set和get

set是為了賦值,給私有化屬性賦值。

get是為了取值,把私有化屬性的值取出來。

class Student:
    __age = 10
    def __init__(self ,age):
        self.age = age
    # 定義公有的set方法和get方法
    def set_age(self ,age):
        self.__age = age
    def get_age(self):
        return self.__age
a = Student('100')
print(a.get_age())
a.set_age(1000)
print(a.get_age())

私有化好處:

隱藏屬性不被外界隨意修改(在set里面加一些判斷,防止被隨意修改)

也可以修改,通過函數完成

def setXXX(self,xxx):
?? ?篩選賦值內容
?? ?if 條件:
?? ??? ?賦值
?? ?else:
?? ??? ?不賦值

如果想獲取具體的某一個屬性,使用get函數來完成

def getXXX(self):
?? ?return 要返回的某一個屬性

通過set和get函數即可完成對私有化屬性的一些操作。

裝飾器@property

class Stu:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    def set_age(self,age):
        if age > 0 and age < 100:
            self.__age = age
        else:
            print('不在規定范圍內')
    def get_age(self):
        return self.__age
    def __str__(self):
        return 'name: {} \nage:{}'.format(self.name,self.__age)
a = Stu('lisan',20)
a.name = 'wangwu'
print(a.name)
a.set_age(30)
print(a.get_age())

當我想訪問私有屬性的時候,只能通過get和set函數來訪問。

通過裝飾器,就可以讓私有屬性當作屬性一樣去調用。

class Stu:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    @property
    def age(self):
        return self.__age
    @age.setter
    def age(self,age):
        self.__age = age
    def __str__(self):
        return 'name: {} \nage:{}'.format(self.name,self.__age)
a = Stu('lisan',20)
a.age = 90
print(a)
a.age = 40
print(a)

原文鏈接:https://blog.csdn.net/weixin_73888239/article/details/128889434

欄目分類
最近更新