您好,登錄后才能下訂單哦!
今天簡(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
免責(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)容。