Python 学习入门(37)—— @classmethod函数
2014-02-21 23:33
459 查看
@classmethod : 类方法@staticmethod : 静态方法类方法和静态方法的调用一样,都是通过类就可以直接调用。区别:类方法,需要传入该类,定义类方法的时候要传一个默认的参数cls。静态方法则不用。
示例:
示例:@property,@staticmethod,@classmethod
This is a static method!
cls: <class '__main__.MyClass'>
cls.name: <property object at 0x150d680>
cls.static_method(): This is a static method!
None
__init__
instance.test(): call test
None
__init__
blog.ithomer.net
forum.ithomer.net
示例:
#!/usr/bin/env python # -*- coding: utf-8 -*- # blog.ithomer.net class Test(object): x = 11 def __init__(self, _x): self._x = _x print("Test.__init__") @classmethod def class_method(cls): print("class_method") @staticmethod def static_method(): print("static_method") @classmethod def getPt(cls): cls.class_method() cls.static_method() if "__main__" == __name__: Test.class_method() # class_method Test.static_method() # static_method Test.getPt() # class_method static_method t = Test(22) # Test.__init__ t.class_method() # class_method t.static_method() # static_method print Test.x # 11 # print Test._x print t.x # 11 print t._x # 22 # t.getPr() # 'Test' object has no attribute 'getPr'运行结果:
class_method static_method class_method static_method Test.__init__ class_method static_method 11 11 22 Traceback (most recent call last): File "/home/homer/workspace/myPython/com/connmiliao.py", line 40, in <module> t.getPr() AttributeError: 'Test' object has no attribute 'getPr'
示例:@property,@staticmethod,@classmethod
#!/usr/bin/env python # -*- coding: utf-8 -*- # blog.ithomer.net class MyClass(object): def __init__(self): print '__init__' self._name = 'blog.ithomer.net' @staticmethod def static_method(): print 'This is a static method!' def test(self): print 'call test' @classmethod def class_method(cls): print 'cls: ',cls print 'cls.name: ',cls.name print 'cls.static_method(): ',cls.static_method() instance = cls() print 'instance.test(): ',instance.test() @property def name(self): return self._name @name.setter def name(self, value): self._name = value if __name__ == '__main__': MyClass.static_method() MyClass.class_method() mc = MyClass() print mc.name mc.name = 'forum.ithomer.net' print mc.name运行结果:
This is a static method!
cls: <class '__main__.MyClass'>
cls.name: <property object at 0x150d680>
cls.static_method(): This is a static method!
None
__init__
instance.test(): call test
None
__init__
blog.ithomer.net
forum.ithomer.net
相关文章推荐
- python常用函数
- Python web.py 实例和源码分析:
- pycuda安装 python<3.0
- Python正则表达式指南
- Python socket 客户端和服务器端
- Python中的string模块的学习
- Python 元组、列表、字典、文件
- python第二站:使用pypi发布程序代码
- python 单元测试
- python web.py安装使用
- python新手必碰到的问题---encode与decode,中文乱码
- Python学习笔记(4)Python中super的用法
- python load mat
- python实现360的字符显示界面
- python实现360皮肤按钮控件示例
- 如何理解并正确使用python中的self init
- 转: Python 运算符与用法
- python原始套接字编程示例分享
- python三元运算符
- python实现360皮肤按钮控件示例