反射 与 preprrty装饰器】的更多相关文章

反射: 指的是通过字符串来操作对象属性的增删改除 主要分为四种方法: hasattr :    查看字符串 是否 存在 返回---> Ture / False getattr:    获取对象属性的 值 并返回 setattr : 对 对象属性值的 修改 (属性=值存在的情况下)或 添加 (属性=值不存在的情况下) delattr    删除指定对象的(属性=值) ps: 没有找到则报错 如下例: class Foo: def __init__(self,name,age): self.name…
一.反射 最近接触到python的反射机制,遂记录下来已巩固.但是,笔者也是粗略的使用了__import__, getattr()函数而已.目前,笔者的理解是,反射可以使用户通过自定义输入来导入响应的module.class等.下面以一个例子说明. 文件目录如下, reflection文件夹下有Car module,现在main.py下通过反射机制导入Car module. Car.py源码如下: class Car(object): def __init__(self, name, color…
""" 类的装饰器: @property 当类的函数属性声明 @property后, 函数属性不需要加括号 即可调用 @staticmethod 当类的函数属性声明 @staticmethod后, 把函数属性声明为静态属性, 不能直接访问类属性与实例属性 @classmethod 当函数属性声明 @classmethod后,把函数属性声明为类属性,不能直接访问实例属性,类可以直接调用 """ class A(): q = "清华大学&q…
一.super进阶 在多继承中:严格按照mro顺序来执行 super是按照mro顺序来寻找当前类的下一类 在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法 在py2中的新式类中,需要我们主动传递参数super(子类的名字,子类的对象). 函数名() 这样才能够帮我们调用到这个子类的mro顺序的下一个类中的方法 在py2的经典类中,并不支持使用super来找下一个类 class A: def func(self): print('is A') ​ ​ class B…
上节回顾: 1.集合 a.关系测试 b.去重 2.文件操作及编码 3.函数 4.局部变量和全局变量 上节回顾 本节课内容: 1.迭代器生成器 2.装饰器 3.json pickle数据序列化 4.软件目录结构规范 5.作业:ATM项目开发 一.装饰器 1. 定义:本质是函数,用来装饰其他函数,就是为其他函数添加附加功能 2. 原则: A. 不能修改被装饰的函数的源代码 B. 不能修改被装饰的函数的调用方式 3.实现装饰器知识储备 A. 函数即“变量” B. 高阶函数 a. 把一个函数名当做实参传…
原文链接:http://python.jobbole.com/86717/ Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def say_hello(): print "hello!" def say_goodbye(): print "hello!" # bug here if __name__ == '__main__':…
今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 1. 装饰器入门 1.1. 需求是怎么来的? 装饰器的定义很是抽象,我们来看一个小例子. def foo(): print 'in foo()' foo() 这是一个很无聊的函数没错.但是突然有一个更无聊的…
一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.简单的说装饰器就是一个用来返回函数的函数. 它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用. 概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 二.为什么需要装饰器 1.先来看一个简单例子…
文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say(): return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出的答案是: def makebold(fn): def wrapped(): return "<b>" + fn() + "</b>&q…
原文请参考: http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html 今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 1. 装饰器入门 1.1. 需求是怎么来的? 装饰器的定义很是抽象,我们…