亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

Python 中的 Getter 和 Setter

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

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

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

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

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

該方法為 getter 返回屬性,對(duì)于 setter,該方法將參數(shù)綁定到屬性。 為了進(jìn)行演示,我們將使用一個(gè)擁有位置屬性的 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è)置或方法沒(méi)有太多特殊行為。

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

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

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

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

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

property(fget, fset, fdel, doc)

讓我們?cè)?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 綁定,它保存屬性對(duì)象,有助于保持對(duì)私有屬性的安全訪問(wèn)。

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

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

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

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

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 有四種,因?yàn)?__init__ 方法在調(diào)用類實(shí)例時(shí)設(shè)置了初始位置屬性,從而導(dǎo)致了前兩種。 當(dāng)我們將值設(shè)置為接下來(lái)兩個(gè)的相應(yīng)值時(shí),它會(huì)再次打印。

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

當(dāng)我們使用 setter 方法時(shí),我們可以向 OOP 代碼添加驗(yàn)證。

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python實(shí)現(xiàn)XLS和XLSX之間的相互轉(zhuǎn)換

    使用Python實(shí)現(xiàn)XLS和XLSX之間的相互轉(zhuǎn)換

    在日常工作中,我們經(jīng)常需要處理和轉(zhuǎn)換不同格式的Excel文件,以適應(yīng)不同的需求和軟件兼容性,Excel文件的兩種常見(jiàn)格式是XLS(Excel 97-2003)和XLSX(Excel 2007及以上版本),本文將詳細(xì)介紹如何使用Python在XLS和XLSX格式之間進(jìn)行轉(zhuǎn)換,需要的朋友可以參考下
    2024-09-09
  • OpenCV半小時(shí)掌握基本操作之濾波器

    OpenCV半小時(shí)掌握基本操作之濾波器

    這篇文章主要介紹了OpenCV基本操作之濾波器,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python移位密碼、仿射變換解密實(shí)例代碼

    Python移位密碼、仿射變換解密實(shí)例代碼

    凱撒密碼(Caesar 密碼)是最早的代換密碼,也是古典對(duì)稱密碼體制的典型代表,已經(jīng)初步體現(xiàn)出近代密碼系統(tǒng)的雛形,這篇文章主要給大家介紹了關(guān)于Python移位密碼、仿射變換解密的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 使用Protocol Buffers的C語(yǔ)言拓展提速Python程序的示例

    使用Protocol Buffers的C語(yǔ)言拓展提速Python程序的示例

    這篇文章主要介紹了使用Protocol Buffers的C語(yǔ)言拓展提速Python程序的示例,使用C拓展Python是Python編程進(jìn)階中的重要技巧,需要的朋友可以參考下
    2015-04-04
  • Python arrow模塊使用方法

    Python arrow模塊使用方法

    Arrow 是用于處理日期和時(shí)間的 Python 模塊。 與內(nèi)置的日期和時(shí)間工具相比,它使創(chuàng)建,操作,格式化和轉(zhuǎn)換日期,時(shí)間和時(shí)間戳變得更加容易
    2022-10-10
  • Python中的urllib庫(kù)高級(jí)用法教程

    Python中的urllib庫(kù)高級(jí)用法教程

    這篇文章主要介紹了Python中的urllib庫(kù)高級(jí)用法教程,想要請(qǐng)求需要設(shè)置一些請(qǐng)求頭,如果要在請(qǐng)求的時(shí)候增加一些請(qǐng)求頭,那么就必須使用request.Request類來(lái)實(shí)現(xiàn)了,比如要增加一個(gè) User-Agent ,增加一個(gè) Referer 頭信息等,需要的朋友可以參考下
    2023-10-10
  • Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取(實(shí)例講解)

    Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Python序列操作之進(jìn)階篇

    Python序列操作之進(jìn)階篇

    序列sequence是python中最基本的數(shù)據(jù)結(jié)構(gòu),本文是Python序列操作的進(jìn)階篇,本文先對(duì)序列做一個(gè)簡(jiǎn)單的概括,之后將詳細(xì)講解下關(guān)于序列的操作方法。文中通過(guò)示例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • python腳本實(shí)現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實(shí)例代碼

    python腳本實(shí)現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實(shí)例代碼

    這篇文章主要介紹了python腳本實(shí)現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • pytorch自定義二值化網(wǎng)絡(luò)層方式

    pytorch自定義二值化網(wǎng)絡(luò)層方式

    今天小編就為大家分享一篇pytorch自定義二值化網(wǎng)絡(luò)層方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01

最新評(píng)論