python中有实例方法,类方法,静态方法,普通函数
类方法需要@ classmethod 修饰并且有个隐藏参数 cls,实例方法必须有个参数 self, 静态方法必须有 @staticmethod修饰
普通函数限制:
def ordinary_function(formal_parameter): print "I am an ordinary function, I can't vist class var and intance var" print self.instance_var #报错,因此普通函数无法访问实例方法 print clacc_var#报错,因此普通函数无法访问类变量
实例方法可以添加参数,也可以不添加参数:
下面这段代码能正确运行。add是一个实例方法,fcn也是实例方法,所以实例方法能调用实例方法,但普通函数是不能调用实例方法的
class TestClass(object): val1 = 100 def __init__(self): self.val2 = 200 def fcn(self,val = 400): val3 = 300 self.val4 = val self.val5 = 500 result = self.val4 + self.val5 return result def add(self): return self.fcn() + 1 if __name__ == '__main__': inst = TestClass() print inst.add()