python - 装饰器+描述符(给类添加属性且属性类型审核)
装饰器+描述符
实现给一个类添加属性且对添加的时,对属性进行类型审核:
def zsq(**kwargs):
def fun(obj):
for i,j in kwargs.items():
setattr(obj,i,mxf(i,j))
return obj
return fun class mxf():
def __init__(self,na,ty):
self.na = na
self.ty = ty
def __get__(self, instance, owner):
return instance.ty
def __set__(self, instance, value):
if isinstance(value,self.ty):
instance.__dict__[self.na] = value
else:
print("%s=%s 录入类型错误...."%(self.na,value)) @zsq(name=str,old=int)
class Student():
def __init__(self,name,old):
self.name = name
self.old = old A1 = Student('anec',18)
A2 = Student(4343,'')
print(A1.__dict__)
print(A2.__dict__)
python - 装饰器+描述符(给类添加属性且属性类型审核)的更多相关文章
- python 装饰器的理解以及类装饰器
		
python装饰器的作用就是在不改变原有函数结构的情况下给该函数增加一个新功能,就是不入侵到原来函数里面修改代码给其增加一个新功能 先看代码 def out(fn): def inner(*args, ...
 - Python 装饰器装饰类中的方法
		
title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] categ ...
 - [python 基础]python装饰器(一)添加functools获取原函数信息以及functools.partial分析
		
python装饰器学习的时候有两点需要注意一下 1,被装饰器装饰的函数取其func.__name__和func.func_doc的时候得到的不是被修饰函数的相关信息而是装饰器wrapper函数的doc ...
 - python 装饰器 对类和函数的装饰
		
#装饰器:对类或者函数进行功能的扩展 很多需要缩进的没有进行缩进'''#第一步:基本函数def laxi(): print('拉屎')#调用函数laxi()laxi() print('======= ...
 - Python装饰器实现几类验证功能做法
		
最近新需求来了,要给系统增加几个资源权限.尽量减少代码的改动和程序的复杂程度.所以还是使用装饰器比较科学 之前用了一些登录验证的现成装饰器模块.然后仿写一些用户管理部分的权限装饰器.比如下面这种 de ...
 - Python装饰器实现类Java注解功能
		
最近想用Python写一个简单生成器,类似指定类型和范围,返回指定列表: 比如想要 0 ~ 3 的整数,则 我只需要指定: 最小:0, 最大:3, 步长:1 则返回一个 [0,1,2,3] 的列表 ...
 - python 装饰器 第八步:使用类来作为装饰器参数
		
#第八步:使用类作为装饰器参数 #装饰器使用的操作类 class Wish: #祈求方法 def before(): print('饭前洗洗手') #还愿方法 def after(): print(' ...
 - python 装饰器(五):装饰器实例(二)类装饰器(类装饰器装饰函数)
		
回到装饰器上的概念上来,装饰器要求接受一个callable对象,并返回一个callable对象(不太严谨,详见后文). 那么用类来实现也是也可以的.我们可以让类的构造函数__init__()接受一个函 ...
 - python2.7高级编程 笔记二(Python中的描述符)
		
Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...
 
随机推荐
- Django-website 程序案例系列-7 创建多对多关系表
			
创建多对多关系表: 方式一:一共三张表其中有一张中间表需要手工建立(建议使用第一种方式自定制程度高) class Host(models.Model): hostname = models.CharF ...
 - HDU5387-模拟水题
			
模拟钟表的时分秒针的走动,给出时间求出夹角.注意每组输出要有一个空格 以后要想好再写代码,这样一个水题做了50分钟,太弱了... #include<cstdio> #include< ...
 - BZOJ5338 [TJOI2018] Xor 【可持久化Trie树】【dfs序】
			
题目分析: 很无聊的一道题目.首先区间内单点对应异或值的询问容易想到trie树.由于题目在树上进行,case1将路径分成两段,然后dfs的时候顺便可持久化trie树做询问.case2维护dfs序,对d ...
 - LOJ #6436. 「PKUSC2018」神仙的游戏(字符串+NTT)
			
题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 ...
 - CodeForces 464E The Classic Problem | 呆克斯歘 主席树维护高精度
			
题意描述 有一个\(n\)点\(m\)边的无向图,第\(i\)条边的边权是\(2^{a_i}\).求点\(s\)到点\(t\)的最短路长度(对\(10^9 + 7\)取模). 题解 思路很简单--用主 ...
 - emwin之LISTWHEEL控件之LISTWHEEL_SetPos函数的使用
			
@2018-09-05 [小记] LISTWHEEL控件的LISTWHEEL_SetPos函数的使用注意事项: 该函数不能在创建窗口的WM_INIT_DIALOG分支下作为修改LISTWHEEL控件属 ...
 - 洛谷 P3989 [SHOI2013]阶乘字符串 解题报告
			
P3989 [SHOI2013]阶乘字符串 题目描述 给定一个由前\(n(\le 26)\)个小写字母组成的串\(S(|S|\le 450)\).串\(S\)是阶乘字符串当且仅当前 \(n\) 个小写 ...
 - SQL Server 增、删、改、小部分查
			
--现有三个表Student.Score.Course.Teacher create table Student ( Sno ) not null,--学号 Sname ) not null,--姓名 ...
 - 开启 Hyper-v 后如何使用  Android Emulator?
			
如果开启了 Hyper-v 时,当需要使用 Android Studio 中 Android Emulator 时,系统会出现蓝屏代码错误. 使用下面的方法,则可以解决冲突. 首先,你需要确保已经开启 ...
 - read from /dev/urandom 返回值异常
			
#include<stdio.h> #include<iostream> #include <fcntl.h> #include <sys/mman.h> ...