博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的类实例方法,类方法,类静态方法
阅读量:5113 次
发布时间:2019-06-13

本文共 1415 字,大约阅读时间需要 4 分钟。

以下面的类定义为例:

# coding:utf-8class A:    count = 0    def __init__(self, inst_name):        self.inst_name = inst_name        self.__class__.count += 1    def inst_method(self):        print '实例(%s):%s' % (self.__class__.count, self.inst_name)    @classmethod    def class_method(cls):        print cls.count    @staticmethod    def static_method():        print 'hello'a1,a2,a3,a4 = A('a1'),A('a2'),A('a3'),A('a4')a1.inst_method()a1.class_method() # 或 A.class_method()a1.static_method() # 或 A.static_method()

类实例方法:第一个参数强制为类实例对象,可以通过这个类实例对象访问类属性,可以通过类实例对象的__class__属性访问类属性。

def inst_method(self):    print '实例(%s):%s' % (self.__class__.count, self.inst_name)

类实例方法不需要标注,第一个参数必不可少,解析器自动会将类实例对象传给方法的第一个参数。

类的初始化方法__init__也是实例方法,在实例创建的时候自动调用。在这里每当初始化一个实例,就通过__class__来访问类属性count,是它加一,用来统计类的实例数。

def __init__(self, inst_name):    self.inst_name = inst_name    self.__class__.count += 1

类方法:第一个参数强制为类对象,可以通过这个类对象访问类属性,由于没有传入类实例对象,所以不能访问类实例属性。

@classmethoddef class_method(cls):    print cls.count

类方法需要使用classmethod标注,第一个参数必不可少,解析器自动会将类对象传给方法的第一个参数。

类静态方法:无法访问类属性、类实例属性、没有默认的第一个参数,其实跟类没什么关系,只是绑定在类命名空间下的函数而已。

@staticmethoddef static_method():    print 'hello'

类静态方法通常用来定义一些和类主题相关的函数。

通过类对象可以调用类方法、类静态方法,但不可以调用类实例方法;通过类实例对象可以调用以上三种方法

a1,a2,a3,a4 = A('a1'),A('a2'),A('a3'),A('a4')a1.inst_method()a1.class_method() # 或 A.class_method()a1.static_method() # 或 A.static_method()

转载于:https://www.cnblogs.com/skeeter/p/3545250.html

你可能感兴趣的文章
POJ1006 中国剩余定理
查看>>
部署JUnit
查看>>
【图论 搜索】bzoj1064: [Noi2008]假面舞会
查看>>
Python补充之函数
查看>>
获取含有class为某个值的a标签或img标签
查看>>
接口测试概念
查看>>
【LeetCode】107. Binary Tree Level Order Traversal II (2 solutions)
查看>>
【LeetCode】124. Binary Tree Maximum Path Sum
查看>>
[python]bytes和str
查看>>
ffmpeg常用命令(windows)
查看>>
Redis部署
查看>>
FFT模板
查看>>
0405_hxtx_主题游常用联系人功能代码实现
查看>>
计算机病毒实践汇总六:IDA Pro基础
查看>>
Python调用API接口的几种方式
查看>>
计算几何基础
查看>>
Oracle PL/SQL中的循环处理(sql for循环)
查看>>
JavaScript:综合案例-表单验证
查看>>
java 访问权限控制
查看>>
2016-5-31 项目结构调整
查看>>