1.self在类的方法中才有,独立函数不用
2.self在调用类的方法时,可以不必传入
3.self指的是类的实例本身,不是类
4.类的方法中的self,也是指的实例
__init__函数:
1.如果继承父类中有init函数,子类可以不定义init函数
例子:
# -*- coding:utf-8 -*- class Task:
#定义元组 rfields = ( ("pkg_name", True, 'pkg name', 'a4_summary_modify'), ("target", True, 'key', 'k'), ("file_path", True, 'file path', 'g'), ("curl_thread_count", True, 'curl thread count', ''), ("key", True, 'execute time(hour)', ''), ('mem_threshold', False, "mem threshold", 2*1024*1024), )
#self.key是成员变量 def __init__(self,key): self.key = {}
#如果x[0]=key 即等于target,就打印出来filt及filt[0][3]
#key是临时变量,生命周期即函数结束,实例task传的‘target’参数给临时变量key def getKeyName(self,key,default = None): filt = filter(lambda x:x[0] ==key, self.rfields) print filt ,filt[0][3] return self.key.get(key, filt[0][3] if filt else default) if __name__ == '__main__': task = Task('x').getKeyName('target')打印结果:
(('target', True, 'key', 'k'),) k