溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)Porperty裝飾器?

發(fā)布時(shí)間:2020-05-25 13:54:56 來(lái)源:億速云 閱讀:649 作者:鴿子 欄目:編程語(yǔ)言

今天簡(jiǎn)單的實(shí)現(xiàn)下Porperty裝飾器
demo:

class Porperty:
    def __init__(self, fget= None, fset= None, fdel = None):
        self.fget= fget
        self.fset = fset
        self.fdel = fdel
    def __get__(self, instance, cls):
        if instance is None:
            return self
        if not callable(self.fget):
            raise AttributeError
        return self.fget(instance)
    def __set__(self, instance, value):
        if not callable(self.fset):
            raise AttributeError
        return self.fset(instance, value)
    def __delete__(self, instance):
        if not callable(self.fdel):
            raise AttributeError
        return self.fdel(instance)
    def setter(self, fset):
        self.fset = fset
        return self.fset
    def deleter(self, fdel):
        self.fdel = fdel
        return self.fdel
class A:
    def __init__(self,x):
        self._x = x
    @Porperty
    def x(self):
        return self._x

a =A(4)
a.x
a.x = 123

class A:
    def __init__(self,x):
        self._x = x
    @Porperty
    def x(self):
        return self._x
    @x.setter
    def set_x(self, value):
        self._x = value
a = A(5)
a.x
a.x = 7

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI