鉴于昨天被类和函数折腾得晕头转向,今特把类的知识翻出来温习。
1、定义类并创建实力对象
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 __author__ = 'ziv·chan' 4 5 #定义Person类,并创建出两个实例,打印实例,再比较两个实例是否相等。 6 class Person(object): 7 pass 8 9 ming = Person() 10 hong = Person() 11 12 print ming 13 print hong 14 print ming == hong
<__main__.Person object at 0x7f8722277450> <__main__.Person object at 0x7f8722195910> False
几点说明:
1、pass能够创建一个最简单的类.结果中出现的__main__意思是,调用模块本身。
2、判断某个对象是否是类的实例:isinstance(a, A)。
3、判断两个对象是否是否完全一致(意思为: 判断两个变量引用的地址是否相同,如果相同,则两个变量实际引用为同一对象):a is b。
4、判断两个对象中的内容是否相同,用 == 进行判断:a == b。
2、创建实例属性
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 __author__ = 'ziv·chan' 4 5 #创建包含两个 Person 类的实例的 list,并给两个实例的 name 赋值,然后按照 name 进行排序。 6 class Person(object): 7 pass 8 p1 = Person() 9 p1.name = 'Bart' 10 11 p2 = Person() 12 p2.name = 'Adam' 13 14 p3 = Person() 15 p3.name = 'Lisa' 16 17 L1 = [p1, p2, p3] 18 L2 = sorted(L1,key = lambda x:x.name) 19 20 print L2[0].name 21 print L2[1].name 22 print L2[2].name
几点说明:
1、sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。sorted(iterable, cmp=None, key=None, reverse=False),iterable:是可迭代类型;cmp:用于比较的函数,比较什么由key决定;key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。返回值:是一个经过排序的可迭代类型,与iterable一样。key接受的函数返回值,表示此元素的权值,sorted将按照权值大小进行排序。在此不再展开。
2、lambda是一个匿名函数,其主体是一个表达式,而不是一个代码块,仅仅能在lambda表达式中封装有限的逻辑进去,lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。
3、cmp:比较两个对象x和y,如果x < y ,返回负数;x == y, 返回0;x > y,返回正数。