0
最近,我讀的書「學習蟒蛇」。在這本書中,它使用描述模擬特性如下:在蟒蛇:如何使用描述符來模擬性能
class Property:
def __init__(self, fget=None, fset=None, fdel=None, doc=None):
self.fget = fget
self.fset = fset
self.fdel = fdel # Save unbound methods
self.__doc__ = doC# or other callables
def __get__(self, instance, instancetype=None):
if instance is None:
return self
if self.fget is None:
raise AttributeError("can't get attribute")
return self.fget(instance) # Pass instance to self
def __set__(self, instance, value):
if self.fset is None:
raise AttributeError("can't set attribute")
self.fset(instance, value)
def __delete__(self, instance):
if self.fdel is None:
raise AttributeError("can't delete attribute")
self.fdel(instance)
最後,它說:「...我們必須用setter和deleter方法來擴展我們的Property類,這會節省裝飾的存取函數並返回屬性對象(self應該足夠了)。由於內置屬性已經做到了,所以我們這裏將省略這個擴展的正式編碼。「 ? 我的問題是如何實現的「二傳手」的裝飾和「刪除器」裝飾我不知道
也許嘗試一些事情後才張貼在這裏。 – Ludisposed