python基础2-静态方法和类方法
2017-05-16 23:21
225 查看
1. 类方法
是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以
cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。
class people: country = 'china' #类方法,用classmethod来进行修饰 @classmethod def getCountry(cls): return cls.country p = people() print p.getCountry() #可以用过实例对象引用 print people.getCountry() #可以通过类对象引用
类方法还有一个用途就是可以对类属性进行修改:
class people: country = 'china' #类方法,用classmethod来进行修饰 @classmethod def getCountry(cls): return cls.country @classmethod def setCountry(cls,country): cls.country = country p = people() print p.getCountry() #可以用过实例对象引用 print people.getCountry() #可以通过类对象引用 p.setCountry('japan') print p.getCountry() print people.getCountry()
结果显示在用类方法对类属性修改之后,通过类对象和实例对象访问都发生了改变
2. 静态方法
需要通过修饰器@staticmethod来进行修饰,静态方法不需要多定义参数
class people: country = 'china' @staticmethod #静态方法 def getCountry(): return people.country print people.getCountry()
总结
从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用相关文章推荐
- Python基础-封装与扩展、静态方法和类方法
- Python基础-封装与扩展、静态方法和类方法
- python基础之类的静态方法和类方法
- python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- 继承父类,调用父类中的方法 分类: python 小练习 python基础学习 2014-01-10 17:54 325人阅读 评论(0) 收藏
- Python 成员方法,类方法以及静态方法
- gzip 压缩格式的网站处理方法---sina.com 分类: python python基础学习 2013-07-16 17:40 362人阅读 评论(0) 收藏
- python 类方法、类实例方法、静态方法
- python基础教程之简单入门说明(变量和控制语言使用方法)
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- file()创建文件方法 分类: python python基础学习 2012-12-24 18:17 239人阅读 评论(0) 收藏
- 静态方法 分类: python基础学习 2014-04-05 19:34 228人阅读 评论(0) 收藏
- python基础教程之类class定义使用方法
- python基础教程之类class定义使用方法
- python 调用shell命令三种方法 分类: python基础学习 python Module 2014-01-13 14:13 239人阅读 评论(0) 收藏
- vim python自动补全方法 分类: ubuntu python基础学习 虚拟机 测试 2013-07-05 15:37 603人阅读 评论(0) 收藏
- Python基础教程——9魔法方法、属性及迭代器【总结】
- os.walk()方法 分类: python Module python基础学习 2013-08-09 07:59 342人阅读 评论(0) 收藏
- python基础教程之lambda表达式使用方法