您的位置:首页 > 编程语言 > Python开发

python3中property、classmethod、staticmethod的简单实现

2017-01-06 18:59 489 查看
class ClassMethod(object):
def __init__(self,function):
self.__f = function

def __get__(self,instance,owner):
def wrap(cls):
def f(*k, **v):
self.__f(cls,*k,**v)
return f
return wrap(owner)

class StaticMethod(object):
def __init__(self,function):
self.f = function

def __get__(self, instance, owner):
return self.f

class Property(object):
def __init__(self,fget,fset=None,fdel=None):
self._fget=fget
self._fset=fset
self._fdel=fdel

def __get__(self,instance,owner):
if instance==None:
return self
if self._fget==None:
raise AttributeError('can't get attribute')
return self._fget(instance)

def __set__(self,instance,value):
if self._fset==None:
raise AttributeError('can't set attribute')
self._fset(instance,value)

def __delete__(self,instance):
if self._fdel==None:
return
self._fdel(instance)

def getter(self,fget):
self._fget=fget
return self

def setter(self,fset):
self._fset=fset
return self

def deleter(self,fdel):
self._fdel=fdel
return self
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐