静态,类,实例方法,字典
1、python其实有3个方法,即实例方法,类方法(classmethod),静态方法(staticmethod)
def foo(x): 一般函数
print "executing foo(%s)"%(x)
class A(object):
def foo(self,x): 实例方法
print "executing foo(%s,%s)"%(self,x)
@classmethod
def class_foo(cls,x):类方法
print "executing class_foo(%s,%s)"%(cls,x)
@staticmethod
def static_foo(x): 静态方法
print "executing static_foo(%s)"%x
a=A()
这里先理解下函数参数里面的self和cls.这个self和cls是对类或者实例的绑定,对于一般的函数来说我们可以这么调用foo(x),这个函数就是最常用的,它的工作跟任何东西(类,实例)无关.对于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是foo(self, x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样,只不过它传递的是类而不是例,A.class_foo(x).注意这里的self和cls可以替换别的参数,但是python的约定是这俩,还是不要改的好.
对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)或者A.static_foo(x)来调用
a对象和A类 实例方法 类方法 静态方法
a = A() a.foo(x) a.class_foo(x) a.static_foo(x)
A 不可用 A.class_foo(x) A.static_foo(x)
suppose 假设,猜想
2、字典,访问不存在的键,则会报错,可以使用get方法,还可以设置默认值
age = info.get('age')
age #'age'键不存在,所以age为None
type(age)
<type 'NoneType'>
age = info.get('age', 18) # 若info中不存在'age'这个键,就返回默认值18
age
18
字典操作
修改
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
info['id'] = 200
添加
info['age']= 28
获取
info.get(age)
删除
del info['name']
删除整个字典
del info
clear清空整个字典
info.clear() 清空后 { }
常用字典操作
a={"name":suqin,"age":18}
len(a)
a.keys() 返回列表
a.values() 返回列表
a.items() 返回(键:值)元祖的列表
a.has_key('name') 返回True | false
字典的遍历
a={"name":suqin,"age":18}
for key in a.keys(): for value in a.values():
for item in a.items():
print(item)
>> ('name', suqin)
>> ('age', 18)
for key,value in a.items():
进行的拆包
想一想,如何实现带上下标索引的遍历enumerate()
>>> list = ['a', 'b', 'c', 'd']
>>> for i, chr in enumerate(list):
... print i, chr
...
0 a
1 b
2 c
3 d
字符串遍历
>>> a_str = "hello itcast"
>>> for char in a_str:
... print(char,end=' ')
...
h e l l o i t c a s t
元组遍历
>>> a_turple = (1, 2, 3, 4, 5)
>>> for num in a_turple:
... print(num,end=" ")
1 2 3 4 5