京公网安备 11010802034615号
经营许可证编号:京B2-20210330
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
这篇文章主要介绍了python中的实例方法、静态方法、类方法、类变量和实例变量浅析,需要的朋友可以参考下
注:使用的是Python2.7。
一、实例方法
实例方法就是类的实例能够使用的方法。如下:
if __name__ == '__main__':
foo01 = Foo('letian')
foo01.hi()
print type(Foo)
print type(foo01)
print id(foo01)
print id(Foo)
运行结果为:
运行依然正确。 内置函数id用来查看对象的标识符,下面是其doc内容:
Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
二、静态方法
静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作。使用装饰器@staticmethod定义静态方法。类对象和实例都可以调用静态方法:
if __name__ == '__main__':
foo01 = Foo('letian')
foo01.hi()
foo01.add(1,2)
Foo.add(1, 2)
运行结果如下:
注意,很多编程语言不允许实例调用静态方法。
三、类方法
类方法是将类本身作为对象进行操作的方法。类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls。类对象和实例都可以调用类方法:
if __name__ == '__main__':
foo01 = Foo()
foo01.hi(2)
Foo.hi(3)
运行结果如下:
注意,很多其他的编程语言不允许实例调用类方法。
四、super
super用来执行父类中的函数,例如:
class Foo2(Foo):
def hi(self):
super(Foo2, self).hi()
if __name__ == '__main__':
foo2 = Foo2()
foo2.hi()
运行结果:
注意,Foo类必须继承某个类(并且这个继承链开始于object类),否则会报错。如果改成下面的形式:
class Foo2(Foo):
def hi(self):
super(Foo2, self).hi()
if __name__ == '__main__':
foo2 = Foo2()
foo2.hi()
运行时报错如下:
五、类变量和实例变量
类变量定义在类的定义之后,实例变量则是以为self.开头。例如:
if __name__ == '__main__':
foo = Foo()
print foo.val
print Foo.val
运行结果为:
实例也能够访问类变量,如下:
运行结果如下:
另外,可以通过以下方式访问类变量:
运行结果:
还可以这样:
运行结果:
代码如下:
3
六、如何调用父类的构造函数
子类(派生类)并不会自动调用父类(基类)的init方法,例如:
class Foo2(Foo):
def __init__(self):
print self.val
if __name__ == '__main__':
foo2 = Foo2()
运行时报错。
调用父类的init方法有两种,第一种:
class Foo2(Foo):
def __init__(self):
Foo.__init__(self)
print self.val
if __name__ == '__main__':
foo2 = Foo2()
第二种:
class Foo2(Foo):
def __init__(self):
super(Foo2,self).__init__()
print self.val
if __name__ == '__main__':
foo2 = Foo2()
这两种方法的运行结果均为:
不过这两种方法是有区别的。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】埋点、产品、互联网、数据库、决策、数据分析、产品经理、商业模式、移动互联网、指标体系、运营模块、大数据平 ...
2026-07-22在高并发、大数据量的业务系统中,单表数据量达到千万级甚至亿级后,会出现查询性能骤降、索引维护成本飙升、存储扩容困难等问题 ...
2026-07-22 很多企业团队并非缺乏指标,而是陷入“指标失控”:仪表盘上堆满实时跳动的数据,却无法回答“当前瓶颈在哪、下一步该做什么 ...
2026-07-22在金融风控、企业运营、行业研究等数据分析场景中,大量数据以面板数据形态存在:例如多家分支机构连续多个季度的风险指标、多位 ...
2026-07-21 很多数据分析师每天都在计算指标、制作报表,但当被问到“什么叫指标数据元”“指标数据标准包含哪些核心维度”“指标数据质 ...
2026-07-21一、活动介绍 2026暑期CDA备考冲刺季,为想利用假期拿证的你量身打造。考点胶囊内容搭配多重硬核福利,让你在旅行、实习、居家 ...
2026-07-21金融行业的运营风险贯穿业务全流程,涵盖交易欺诈、操作违规、流程漏洞、合规偏差、客户信用异常等多元场景,是银行、保险、证券 ...
2026-07-17财产保险作为金融行业的核心板块,涵盖车险、家财险、责任险、企财险等多元品类,是个人与企业抵御财产风险、经营风险的重要保障 ...
2026-07-17 很多数据分析师能熟练写SQL、做透视表,但当被问到“数据是从哪里来的?经过哪些加工才进入数据仓库?ETL具体做了什么?”时 ...
2026-07-17【核心关键词】模块、餐饮、客户、门店、企业、订单、供应链、多样化、产品、生产计划、数据分析、生产管理、物料管理、业务分 ...
2026-07-16在数字化分析时代,原始数据本身不具备业务价值,只有通过科学的统计学方法加工、拆解、验证与解读,才能挖掘数据背后的规律、差 ...
2026-07-16 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-07-16在描述性统计分析、数据预处理、异常值排查与多组数据分布对比工作中,箱线图(Box Plot)是应用最广泛的可视化与统计工具之一。 ...
2026-07-15在企业数据存储、业务统计与数据分析工作中,绝大多数业务数据都带有时间维度属性,例如订单创建时间、用户注册时间、支付完成时 ...
2026-07-15 很多数据分析师拿到数据就开始清洗、建模,但当被问到“这批数据属于什么类型——结构化还是非结构化?分类变量还是数值变量 ...
2026-07-15【核心关键词】产品、经营、客户、调研、销售额、宏观、会计行业、客户满意度、发展趋势、经营状况、数据分析、竞争对手、数据 ...
2026-07-14问卷调查是市场调研、用户研究、社会调研与产品分析的核心数据采集方式。问卷数据大多以分类数据为主,例如用户性别、年龄分层、 ...
2026-07-14 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-07-14在数据分析、业务效果验证、AB实验扩展、行业对比等场景中,我们经常需要对比三组及以上样本的均值差异,例如不同区域的客单价对 ...
2026-07-13在互联网产品运营、用户生命周期管理与商业化数据分析中,留存指标是判断产品价值、用户满意度与商业模式健康度的核心基准。常规 ...
2026-07-13