最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python創(chuàng)建Getter和Setter的方法詳解

 更新時間:2023年10月20日 09:39:53   作者:跡憶客  
Getters?和?Setters?是幫助我們設(shè)置類變量或?qū)傩远鵁o需直接訪問的方法,這篇文章主要和大家介紹了如何在Python中創(chuàng)建Getter和Setter,需要的可以參考下

面向?qū)ο缶幊蹋∣OP)是一種編程范式,它使很多事情變得容易,從可組合性到繼承,并允許我們更快地構(gòu)建功能和程序部件。 這個范式有不同的特點; 兩個是 getter 和 setter。

類是 OOP 的基礎(chǔ),通常具有每個實例唯一的變量,并且這些變量(通常稱為屬性)通過方法設(shè)置或獲取。 這些方法稱為 getter 和 setter。

這些行為在支持 OOP 的編程語言中很流行,Python 也支持它。 本文將討論如何在 Python 中創(chuàng)建 getter 和 setter。

Python 中的 Getter 和 Setter

Getters 和 Setters 是幫助我們設(shè)置類變量或?qū)傩远鵁o需直接訪問的方法,違背了抽象和封裝的目的。 因此,通過 getter 和 setter,我們就能夠處理類屬性。

在我們創(chuàng)建 getter 和 setter 之前,重要的是要知道,與其他編程語言不同,Python 沒有隱藏字段,因此您可以通過點表示法直接訪問類中的變量。

我們可以使用普通函數(shù)、property() 函數(shù)和 @property 裝飾器來實現(xiàn) getter 和 setter。

在 Python 中使用函數(shù)創(chuàng)建 Getter 和 Setter

稱為方法的典型類函數(shù)對于創(chuàng)建 getter 和 setter 非常有用,我們可以使用 self 概念輕松地設(shè)置它們。

該方法為 getter 返回屬性,對于 setter,該方法將參數(shù)綁定到屬性。 為了進行演示,我們將使用一個擁有位置屬性的 Employee、名為 getPosition 的 getter 方法和名為 setPosition 的 setter 方法。

class Employee:
    def __init__(self) -> None:
        self.position = None

    def getPosition(self):
        return self.position

    def setPosition(self, position):
        self.position = position

Jacob = Employee()
Jinku = Employee()

Jacob.setPosition("Engineer II")
Jinku.setPosition("Senior Engineer")

print(Jacob.position)
print(Jinku.getPosition())

輸出:

Engineer II
Senior Engineer

但是,這種設(shè)置或方法沒有太多特殊行為。

在Python中使用property()函數(shù)創(chuàng)建Getter和Setter

為了獲得一些特殊的行為,我們可以使用 property() 函數(shù)來創(chuàng)建并返回一個屬性對象,該對象包含三個方法:getter() 、setter() 和 delete()。

它有助于提供實例屬性的接口。 此功能使我們能夠輕松創(chuàng)建所有 getter 和 setter 功能。

要使用 property() 函數(shù),我們需要設(shè)置四個參數(shù)值,它們是使 property() 成為高階函數(shù)的函數(shù)。

getter、setter 和 delete 方法是它的參數(shù)(都是可選的),并且它返回屬性對象。

property(fget, fset, fdel, doc)

讓我們在 OOP 代碼中使用 property() 函數(shù)。

class Employee:
    def __init__(self):
        self.position = None

    def getPosition(self):
        return self.position

    def setPosition(self, position):
        self.position = position

    pos = property(getPosition, setPosition)

Jacob = Employee()
Jinku = Employee()

Jacob.position = "Engineer II"
Jinku.position = "Senior Engineer"

print(Jacob.position)
print(Jinku.position)

輸出:

Engineer II
Senior Engineer

隨著 property() 函數(shù)的引入,我們有了 pos 綁定,它保存屬性對象,有助于保持對私有屬性的安全訪問。

使用@property裝飾器在Python中創(chuàng)建Getter和Setter

我們可以使用 @property 裝飾器來實現(xiàn) property() 函數(shù),這樣就不需要在我們的方法中使用 get 和 set 名稱了。

使用 @property 裝飾器,我們可以重用定義 getter 和 setter 函數(shù)的位置名稱。

使用 @property,我們創(chuàng)建 getter,使用 @position.setter,我們創(chuàng)建 setter,這通過添加到代碼中并在輸出中可見的 print 語句顯而易見。

class Employee:
    def __init__(self):
        self.position = None

    @property
    def position(self):
        print("Get Employee Position: ")
        return self._position

    @position.setter
    def position(self, value):
        print("Set Position")
        self._position = value

Jacob = Employee()
Jinku = Employee()

Jacob.position = "Engineer II"
Jinku.position = "Senior Engineer"

print(Jacob.position)
print(Jinku.position)

輸出:

Set Position
Set Position
Set Position
Set Position
Get Employee Position:
Engineer II
Get Employee Position:
Senior Engineer

Set Position 有四種,因為 __init__ 方法在調(diào)用類實例時設(shè)置了初始位置屬性,從而導(dǎo)致了前兩種。 當我們將值設(shè)置為接下來兩個的相應(yīng)值時,它會再次打印。

對于getter,它在獲取屬性值時打印語句Get Employee Position,并且getter只被調(diào)用兩次。 于是就有了這兩種說法。

當我們使用 setter 方法時,我們可以向 OOP 代碼添加驗證。

class Employee:
    def __init__(self):
        self.position = None

    @property
    def position(self):
        print("Get Employee Position: ")
        return self._position

    @position.setter
    def position(self, value):
        print("Set Position")
        if (value != None and len(value) <= 2):
            raise ValueError("Position name is less than two and is deemed invalid")
        self._position = value

Jacob = Employee()
Jinku = Employee()

Jacob.position = "OS"
Jinku.position = "Senior Engineer"

print(Jacob.position)
print(Jinku.position)

輸出:

Set Position
Set Position
Set Position
Traceback (most recent call last):
  File "c:\Users\akinl\Documents\Python\getterSetter.py", line 20, in <module>
    Jacob.position = "OS"
  File "c:\Users\akinl\Documents\Python\getterSetter.py", line 14, in position
    raise ValueError("Position name is less than two and is deemed invalid")
ValueError: Position name is less than two and is deemed invalid

到此這篇關(guān)于Python創(chuàng)建Getter和Setter的方法詳解的文章就介紹到這了,更多相關(guān)python創(chuàng)建Getter和Setter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python要求O(n)復(fù)雜度求無序列表中第K的大元素實例

    Python要求O(n)復(fù)雜度求無序列表中第K的大元素實例

    這篇文章主要介紹了Python要求O(n)復(fù)雜度求無序列表中第K的大元素實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python中常見的三種字符串格式化輸出方法小結(jié)

    Python中常見的三種字符串格式化輸出方法小結(jié)

    字符串格式化是編程中一個常見的需求,它可以們將不同類型的數(shù)據(jù)插入到字符串中,在?Python?中,有多種方法可以執(zhí)行字符串格式化,本文為大家介紹了常見的三種方法,希望對大家有所幫助
    2024-02-02
  • Django返回json數(shù)據(jù)用法示例

    Django返回json數(shù)據(jù)用法示例

    這篇文章主要介紹了Django返回json數(shù)據(jù)用法,結(jié)合實例形式分析了jQuery通過前端ajax發(fā)送get請求及后臺使用Django接收GET請求并返回處理的json數(shù)據(jù)相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • Django 外鍵的使用方法詳解

    Django 外鍵的使用方法詳解

    這篇文章主要介紹了Django 外鍵的使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-07-07
  • pygame 精靈的行走及二段跳的實現(xiàn)方法(必看篇)

    pygame 精靈的行走及二段跳的實現(xiàn)方法(必看篇)

    下面小編就為大家?guī)硪黄猵ygame 精靈的行走及二段跳的實現(xiàn)方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python開發(fā)中的Nonetype類型詳解

    Python開發(fā)中的Nonetype類型詳解

    這篇文章主要介紹了Python開發(fā)中的Nonetype類型詳解,None有自己的數(shù)據(jù)類型NoneType,你可以將None復(fù)制給任何變量,但是你不能創(chuàng)建其他NoneType對象,需要的朋友可以參考下
    2023-12-12
  • Django中使用第三方登錄的示例代碼

    Django中使用第三方登錄的示例代碼

    這篇文章主要介紹了Django中使用第三方登錄的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • pycharm配置SSH遠程連接服務(wù)器詳細步驟(0基礎(chǔ)詳細版)

    pycharm配置SSH遠程連接服務(wù)器詳細步驟(0基礎(chǔ)詳細版)

    PyCharm是一款流行的Python集成開發(fā)環(huán)境(IDE),提供了遠程連接云服務(wù)器的功能,使得開發(fā)者可以更加便捷地進行遠程開發(fā)和調(diào)試,這篇文章主要給大家介紹了關(guān)于pycharm配置SSH遠程連接服務(wù)器的詳細步驟,需要的朋友可以參考下
    2024-07-07
  • mac下pycharm設(shè)置python版本的圖文教程

    mac下pycharm設(shè)置python版本的圖文教程

    今天小編就為大家分享一篇mac下pycharm設(shè)置python版本的圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Django中的CACHE_BACKEND參數(shù)和站點級Cache設(shè)置

    Django中的CACHE_BACKEND參數(shù)和站點級Cache設(shè)置

    這篇文章主要介紹了Django中的CACHE_BACKEND參數(shù)和站點級Cache設(shè)置,Python是最具人氣的Python web框架,需要的朋友可以參考下
    2015-07-07

最新評論

吕梁市| 建湖县| 新乐市| 攀枝花市| 额敏县| 惠来县| 兴业县| 克拉玛依市| 垦利县| 郧西县| 桃江县| 阿巴嘎旗| 永定县| 四平市| 枣庄市| 涪陵区| 土默特左旗| 克拉玛依市| 土默特左旗| 龙岩市| 科技| 扎兰屯市| 怀来县| 禄丰县| 衢州市| 弥渡县| 重庆市| 永州市| 南安市| 盐源县| 罗定市| 安顺市| 股票| 杂多县| 长治县| 洪泽县| 丹棱县| 庆云县| 克东县| 岫岩| 宜兰市|