国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python中的描述符

everfly / 3479人閱讀

摘要:解答三個(gè)問(wèn)題,描述是什么如何實(shí)現(xiàn)使用場(chǎng)景一什么是描述符描述符就是一個(gè)具有綁定行為的對(duì)象屬性,其屬性訪問(wèn)將由描述符協(xié)議中的方法覆蓋。如果這些方法中的任何一個(gè)針對(duì)某個(gè)對(duì)象定義,那么它就被認(rèn)為是一個(gè)描述符。

解答三個(gè)問(wèn)題,描述是什么?如何實(shí)現(xiàn)?使用場(chǎng)景?

一、什么是描述符

描述符就是一個(gè)具有綁定行為的對(duì)象屬性,其屬性訪問(wèn)將由描述符協(xié)議中的方法覆蓋。這些方法為 __get____set____delete__。如果這些方法中的任何一個(gè)針對(duì)某個(gè)對(duì)象定義,那么它就被認(rèn)為是一個(gè)描述符。

__get__ 用于訪問(wèn)屬性。它返回屬性的值,或者在所請(qǐng)求的屬性不存在的情況下出現(xiàn) AttributeError 異常

__set__ 將在屬性分配操作中調(diào)用。不會(huì)返回任何內(nèi)容

__delete__ 控制刪除操作。不會(huì)返回內(nèi)容

二、描述符的實(shí)現(xiàn)方式 2.1 基于類創(chuàng)建
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "liao gao xiang"

class Descriptor(object):
    """"""

    def __init__(self):
        self._name = ""

    def __get__(self, instance, owner):
        print("__get__")
        return self._name

    def __set__(self, instance, value):
        print("__set__")
        self._name = value

    def __delete__(self, instance):
        print("__delete__")
        del self._name


class Person(object):
    name = Descriptor()
    

p = Person()
print(p.name)
p.name = "liao gao xiang"
del p.name
# print(p.name)
2.2 使用propety()函數(shù)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "liao gao xiang"

class Person(object):
    def __init__(self):
        self._name = ""

    def fget(self):
        print("Getting: %s" % self._name)
        return self._name

    def fset(self, value):
        print("Setting: %s" % value)
        self._name = value.title()

    def fdel(self):
        print("Deleting: %s" % self._name)
        del self._name

    name = property(fget, fset, fdel, "I"m the property.")


p = Person()
print(p.name)
p.name = "liao gao xiang"
del p.name
# print(p.name)
2.3 使用@property裝飾器
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "liao gao xiang"

class Person(object):
    """"""

    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        print("get_name")
        return self._name

    @name.setter
    def name(self, value):
        print("set_name")
        self._name = value

    @name.deleter
    def name(self):
        print("del_name")
        del self._name
    

p = Person()
print(p.name)
p.name = "liao gao xiang"
del p.name
# print(p.name)
三、描述符的使用場(chǎng)景

通過(guò)結(jié)合使用描述符,可以實(shí)現(xiàn)優(yōu)雅的編程,允許創(chuàng)建 SettersGetters 以及只讀屬性

根據(jù)值或類型請(qǐng)求進(jìn)行屬性驗(yàn)證

大量用于各種框架中,比如Django的models

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42817.html

相關(guān)文章

  • Python中的屬性描述

    摘要:下面我們用描述符來(lái)實(shí)現(xiàn)中的動(dòng)態(tài)屬性和特性中提及的訂單結(jié)算代碼第四版使用描述符實(shí)現(xiàn)訂單結(jié)算功能描述符基于協(xié)議實(shí)現(xiàn),無(wú)需創(chuàng)建子類。特性是覆蓋型描述符。非覆蓋型描述符沒(méi)有實(shí)現(xiàn)方法的描述符屬于非覆蓋型描述符。類中定義的方法是非覆蓋型描述符。 導(dǎo)語(yǔ):本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之元編程篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門Python的朋友們可以來(lái)一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、了解描述符...

    geekzhou 評(píng)論0 收藏0
  • python 描述解析

    摘要:之所以是這樣是因?yàn)楫?dāng)訪問(wèn)一個(gè)實(shí)例描述符對(duì)象時(shí),會(huì)將轉(zhuǎn)換為。而類的字典中則有描述符對(duì)象。這主要就是因?yàn)槊枋龇麅?yōu)先。此外,非數(shù)據(jù)描述符的優(yōu)先級(jí)低于實(shí)例屬性。參考以上就是本人對(duì)描述符的一些理解,有什么不正確的地方還請(qǐng)不吝指出,謝謝 什么是描述符 python描述符是一個(gè)綁定行為的對(duì)象屬性,在描述符協(xié)議中,它可以通過(guò)方法重寫(xiě)屬性的訪問(wèn)。這些方法有 __get__(), __set__(), 和...

    rozbo 評(píng)論0 收藏0
  • Python中的描述

    摘要:解答三個(gè)問(wèn)題,描述是什么如何實(shí)現(xiàn)使用場(chǎng)景一什么是描述符描述符就是一個(gè)具有綁定行為的對(duì)象屬性,其屬性訪問(wèn)將由描述符協(xié)議中的方法覆蓋。如果這些方法中的任何一個(gè)針對(duì)某個(gè)對(duì)象定義,那么它就被認(rèn)為是一個(gè)描述符。 解答三個(gè)問(wèn)題,描述是什么?如何實(shí)現(xiàn)?使用場(chǎng)景? 一、什么是描述符 描述符就是一個(gè)具有綁定行為的對(duì)象屬性,其屬性訪問(wèn)將由描述符協(xié)議中的方法覆蓋。這些方法為 __get__、__set__ ...

    Aomine 評(píng)論0 收藏0
  • Python中的描述

    摘要:解答三個(gè)問(wèn)題,描述是什么如何實(shí)現(xiàn)使用場(chǎng)景一什么是描述符描述符就是一個(gè)具有綁定行為的對(duì)象屬性,其屬性訪問(wèn)將由描述符協(xié)議中的方法覆蓋。如果這些方法中的任何一個(gè)針對(duì)某個(gè)對(duì)象定義,那么它就被認(rèn)為是一個(gè)描述符。 解答三個(gè)問(wèn)題,描述是什么?如何實(shí)現(xiàn)?使用場(chǎng)景? 一、什么是描述符 描述符就是一個(gè)具有綁定行為的對(duì)象屬性,其屬性訪問(wèn)將由描述符協(xié)議中的方法覆蓋。這些方法為 __get__、__set__ ...

    sunsmell 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<