首页 > 编程语言 > 详细

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

时间:2014-03-24 19:59:27      阅读:552      评论:0      收藏:0      [点我收藏+]
  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代码  bubuko.com,布布扣
  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  

python中@staticmethod 、@classmethod 与一般方法的区别,布布扣,bubuko.com

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

原文:http://blog.csdn.net/fanyunlei/article/details/21954003

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!