# Author : Kelvin
# Date : 2019/1/25 14:46
class Decproperty:
def __init__(self, func):
self.func = func def __get__(self, instance, owner):
print("get")
if instance is None:
return self
res = self.func(instance)
setattr(instance, self.func.__name__, res)
return res class People:
def __init__(self, name, age):
self.name = name
self.age = age @Decproperty
def Age(self):
return "%s的年龄是%d" % (self.name, self.age) p = People("kelvin", 20)
print(p.Age)
print(p.__dict__)
print(p.Age)
print(p.Age)

@property 的功能就是类或类的实例化对象调用类的方法时,只需要用 类.方法名对象名.方法名 不需要加括号就可直接调用。

使用描述符实现property功能的更多相关文章

  1. 课时46:魔法方法:描述符(property的原理)

    目录: 一.描述符(property的原理) 二.课时46课后习题及答案 ********************************** 一.描述符(property的原理) ********* ...

  2. Python描述符以及Property方法的实现原理

    Python描述符以及Property方法的实现原理 描述符的定义: 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实了__get__(),__set__(),__delete__()中 ...

  3. 用描述符实现缓存功能和property实现原理

    class Lazyproperty: def __init__(self, func): self.func = func def __get__(self, instance, owner): p ...

  4. 描述符和property内建函数

    首先我们搞清楚__getattr__ ,__get__ 和 __getattribute__ 作用的不同点. __getattr__在授权中会用到. __getattribute__  当要访问属性时 ...

  5. Python描述符:property()函数的小秘密

    描述符:将某种特殊类型的类的实例指派给另一个类的属性(注意:这里是类属性,而不是对象属性).而这种特殊类型的类就是实现了__get__,__set__,__delete__这三个方法中的一个或多个的新 ...

  6. 利用描述符自定义property

    class Lazyproperty: def __init__(self,func): #传的func函数是被描述的类中的函数属性 self.func = func def __get__(self ...

  7. python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解

     1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...

  8. python描述符理解

    Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...

  9. python描述符学习

    目录 一.对象属性的访问控制 二.描述符基本理解 三.基本使用 四.使用描述符完成property.classmethod.staticmethod自定义实现 1.property的自定义实现 2.c ...

随机推荐

  1. node.js面向对象实现(二)继承

    http://blog.sina.com.cn/s/blog_b5a53f2e0101nrdi.html 继承是面向对象中非常重要的一个概念,那么在Node.js中如何实现继承呢? node.js在u ...

  2. 玩转spring mvc(六)---自定义异常跳转页面

    本文主要是关于如何在出现异常 如404时,跳转到自定义的异常页面,当然这不是spring的知识,但可以整合进去. 在web.xml中新增如下代码,里边的路径可以根据实际情况进行修改 <!-- 7 ...

  3. Android 框架练成 教你打造高效的图片加载框架

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41874561,本文出自:[张鸿洋的博客] 1.概述 优秀的图片加载框架不要太多, ...

  4. Java 读书笔记 (十二) Java Character 类

    在实际开发过程中, 我们经常会遇到需要使用对象,而不是内置数据类型的情况. 为了解决这个问题, Java语言为内置数据类型char提供了包装类Character类. 可以使用Character的构造方 ...

  5. lookup.go

    {             continue         }         addr := net.JoinHostPort(lp.Info.BroadcastAddress, strconv. ...

  6. stm.go

    package) ].ModRevision } func,, ,, ].ModRevision ].Value) }

  7. mybatis批量提交

    之前在做项目时,使用mybatis,批量执行sql,这里简单写下步骤 在配置数据库连接时,加入一个参数,例如 jdbc:mysql://127.0.0.1:3307/mvs-report?allowM ...

  8. ConnectionString 属性尚未初始化

    关于"ConnectionString 属性尚未初始化"的问题(如下图),      我在下面一段代码中发现了问题所在:   public bool ReturnFlag(stri ...

  9. bzoj3236 作业 莫队+树状数组

    莫队+树状数组 #include<cstdio> #include<cstring> #include<iostream> #include<algorith ...

  10. create react app 项目部署在Spring(Tomcat)项目中

    网上看了许多,大多数都是nginx做成静态项目,但是这样局限性太多,与Web项目相比许多服务端想做的验证都很麻烦,于是开始了艰难的探索之路,终于在不经意间试出来了,一把辛酸... 正常的打包就不说了. ...