文档章节

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

刘地
 刘地
发布于 2017/01/06 18:59
字数 158
阅读 38
收藏 0

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

© 著作权归作者所有

刘地
粉丝 101
博文 52
码字总数 69858
作品 1
朝阳
私信 提问
[Python进阶] Python定义类方法

Python中的几种定义类方法:常规方式,@property修饰方式,@classmethod修饰方式,@staticmethod修饰方式。

Eappo_Geng
2018/12/28
19
0
Python知识点:理解和使用装饰器 @decorator

我在我的个人博客“猿人学网站”和公众号“猿人学Python”上写Python教程,有兴趣的可以关注公众号和网站。 Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。...

呆木木人儿
03/12
1K
3
Python中的静态方法和类方法

昨天同事问我一个关于Python静态方法和类方法的区别,上网找了些资料整理一下: @staticmethod和@classmethod都是用来定义静态函数的,它们的相同点是都不用实例化类,可以直接用类名来调用其...

zhouxingxing
2012/10/10
1K
0
Python里面这些点,据说80%的新手都会一脸懵逼

Python虽然语法简单,通俗易懂,但是再简单它也是一门语言,就像一棵大树,总有一些树枝是弯弯绕绕的,让新手看完之后一脸懵逼,今天我们就来说说这几个点,反正我学的时候是很困惑的! 01.函...

糖宝lsh
2018/10/14
59
1
python面试中较常问及的知识点梳理---高级特性

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/Nikki0126/article/details/97793753 • 高级特性 1.函数装饰器有什么...

等我想个好名字
08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
26分钟前
3
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
37分钟前
3
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
46分钟前
6
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部