python函数映射教学 python对象关系映射( 四 )


输出:
set([1])
set([1, 2])
set([1])
set([1])
False
Traceback (most recent call last):
File "F:\Python\test.py", line 9, in
set1.remove(29) #移除不存在的项
KeyError: 29
4、frozenset
集合是可变的,所以不能用做字典的键 。集合本身只能包含不可变值,所以也就不能包含其他集合:
输出如下:
Traceback (most recent call last):
File "F:\Python\test.py", line 3, in
set1.add(set2)
TypeError: unhashable type: 'set'
可以使用frozenset类型用于代表不可变(可散列)的集合:
输出:
set([1, frozenset([2])])
Python反射介绍反射机制是面向对象编程语言中比较重要的功能,可以动态获取对象信息以及动态调用对象,Python作为一门动态编程语言,当然也有反射机制,本文介绍Python反射函数使用方法 。
在程序运行时可以获取对象类型定义信息,例如 , Python中的type(obj)将返回obj对象的类型,这种获取对象的type、attribute或者method的能力称为反射 。通过反射机制,可以用来检查对象里的某个方法 , 或某个变量是否存在 。也就是可以通过字符串映射对象的方法或者属性。
Python反射常用的内置函数
先创建一个类:
利用反射的能力 , 我们可以通过属性字典__dict__来访问对象的属性:
执行输出:
接下来测试一下其他反射函数:
Out:
Out:
Out:
Out:
Out:
Out:
下面介绍两种Python反射的应用场景 。
从前面举的例子中,我们了解到可以通过字符串来获取对象的属性(getattr()),这是非常有用的一个功能 。比如,一个类中有很多方法,它们提供不同的服务,通过输入的参数来判断执行某个方法,一般的使用如下写法:
如果函数比较少这样写没有太大问题,如果有很多,这样写就比较复杂了,需要写大量else语句,可以使用反射机制来写:
这样是不是简洁了很多,上面的例子中 , 通过反射,将字符串变成了函数,实现了对对象方法的动态调用 。
可以通过setattr()方法进行动态属性设置,在使用scapy库构造报文时,我们需要设置某些报文字段 , 然而网络协议的报文字段很多,在需要设置大量字段时 , 一个一个的赋值就很麻烦:
可以使用setattr()方法来赋值:
--THE END--
Python初学(十九)“键值对”是组织数据的一种重要方式,广泛应用在Web系统中 。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应值信息 , 这个过程叫映射 。Python语言中通过字典类型实现映射 。
Python语言中的字典使用大括号{}建立,每个元素是一个键值对,使用方式如下:
{键1:值1, 键2:值2, ... , 键n:值n}
其中 , 键和值通过冒号连接,不同键值对通过逗号隔开 。字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复 。
列表类型采用元素顺序的位置进行索引 。由于字典元素“键值对”中键是值的索引,因此 , 可以直接利用键值对关系索引元素 。
字典中键值对的索引模式如下,采用中括号格式:
值 = 字典变量[键]
print(d[‘201801’])
输出的也就是: 小明
使用大括号可以创建字典 。通过索引和赋值配合,可以向字典中增加元素 。
字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型,通过键索引值 , 并可以通过键修改值 。
字典类型有一些通用的操作函数
dict()函数用于生成一个空字典 , 作用和{}一致

推荐阅读