python中@staticmethod 、@classmethod 与一般方法的区别

  1. 一般方法使用 类生成的对象调用
  2. 静态方法用类直接调用
  3. 类方法用类直接调用类当参数传入方法
  4. 如下面例子:
  5. ###################################
  6. class Person:  
  7.   
  8.     def __init__(self):  
  9.         print "init"  
  10.  
  11.     @staticmethod  
  12.     def sayHello(hello):  
  13.         if not hello:  
  14.             hello='hello'  
  15.         print "i will sya %s" %hello  
  16.  
  17.  
  18.     @classmethod  
  19.     def introduce(clazz,hello):  
  20.         clazz.sayHello(hello)  
  21.         print "from introduce method"  
  22.   
  23.     def hello(self,hello):  
  24.         self.sayHello(hello)  
  25.         print "from hello method"         
  26.   
  27.   
  28. def main():  
  29.     Person.sayHello("haha")  
  30.     Person.introduce("hello world!")  
  31.     #Person.hello("self.hello") #TypeError: unbound method hello() must be called with Person instance as first argument (got str instance instead)  
  32.       
  33.     print "*" * 20  
  34.     p = Person()  
  35.     p.sayHello("haha")  
  36.     p.introduce("hello world!")  
  37.     p.hello("self.hello")  
  38.   
  39. if __name__=='__main__':  
  40.     main()  

 

output:

Shell代码   收藏代码
  1. i will sya haha  
  2. i will sya hello world!  
  3. from introduce method  
  4. ********************  
  5. init  
  6. i will sya haha  
  7. i will sya hello world!  
  8. from introduce method  
  9. i will sya self.hello  
  10. from hello method  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值