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
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
相关文章推荐
- python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
- python的staticmethod与classmethod实现实例代码
- python中7种实现单例模式的方法:staticmethod、classmethod、类属性方法、__new__、装饰器、元类、名字覆盖
- python基础-abstractmethod、__属性、property、setter、deleter、classmethod、staticmethod
- python-静态方法staticmethod、类方法classmethod、属性方法property
- 理解python的staticmethod与classmethod实现
- python-静态方法staticmethod、类方法classmethod、属性方法property
- python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property
- Python基础(6)- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)
- python classmethod,staticmethod实现
- python装饰器之staticmethod,classmethod,property 分类: python 2013-02-17 17:08 1970人阅读 评论(0) 收藏
- python实现的简单的epub2txt
- python用c/s实现服务器简单管理
- python学习(1)--实现简单的服务器与客户端
- python 基于XML生成静态网页的简单实现
- Python中classmethod, staticmethod和普通method的区别
- 用Python实现简单的HTTP服务器(2)--实现一个基本功能的HTTP服务器
- KNN的简单实现(python)
- 用python或者perl实现简单的http服务器目录共享
- 用Python实现简单的HTTP服务器(1)--使用Firebug简单分析HTTP协议