前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python中几个常用的类方法

Python中几个常用的类方法

作者头像
菲宇
发布于 2022-12-21 10:56:46
发布于 2022-12-21 10:56:46
5290
举报
文章被收录于专栏:菲宇菲宇

内置方法 说明  __init__(self,...) 初始化对象(实例),在创建新对象时调用  __del__(self) 析构函数,释放对象,在对象被删除之前调用,进行一些清理工作。  __new__(cls,*args,**kwd) 实例的生成操作  __str__(self) 在使用print语句输出实例时被调用  __getitem__(self,key) 获取序列的索引key对应的值,等价于seq[key]  __len__(self) 在调用内联函数len()时被调用  __cmp__(stc,dst) 比较两个对象src和dst  __getattr__(s,name) 获取属性的值  __setattr__(s,name,value) 设置属性的值  __delattr__(s,name) 删除name属性  __getattribute__() __getattribute__()功能与__getattr__()类似  __gt__(self,other) 判断self对象是否大于other对象  __lt__(slef,other) 判断self对象是否小于other对象  __ge__(slef,other) 判断self对象是否大于或者等于other对象  __le__(slef,other) 判断self对象是否小于或者等于other对象  __eq__(slef,other) 判断self对象是否等于other对象

 __call__(self,*args) 把实例作为函数调用

__init__(): __init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化。注意,这个名称的开始和结尾都是双下划线。 代码例子: #!/usr/bin/python # Filename: class_init.py class Person:   def __init__(self, name):     self.name = name   def sayHi(self):     print 'Hello, my name is', self.name p = Person('Swaroop') p.sayHi() 输出: Hello, my name is Swaroop    说明:__init__方法定义为取一个参数name(以及普通的参数self)。在这个__init__里,我们只是创建一个新的域,也称为name。注意它们是两个不同的变量,尽管它们有相同的名字。点号使我们能够区分它们。最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。 __new__(): __new__()在__init__()之前被调用,用于生成实例对象.利用这个方法和类属性的特性可以实现设计模式中的单例模式.单例模式是指创建唯一对象吗,单例模式设计的类只能实例化一个对象. #!/usr/bin/python # -*- coding: UTF-8 -*- class Singleton(object):   __instance = None            # 定义实例   def __init__(self):     pass   def __new__(cls, *args, **kwd):     # 在__init__之前调用     if Singleton.__instance is None:  # 生成唯一实例       Singleton.__instance = object.__new__(cls, *args, **kwd)     return Singleton.__instance  __getattr__()、__setattr__()和__getattribute__(): 当读取对象的某个属性时,python会自动调用__getattr__()方法.例如,fruit.color将转换为fruit.__getattr__(color).当使用赋值语句对属性进行设置时,python会自动调用__setattr__()方法.__getattribute__()的功能与__getattr__()类似,用于获取属性的值.但是__getattribute__()能提供更好的控制,代码更健壮.注意,python中并不存在__setattribute__()方法. 代码例子: #!/usr/bin/python # -*- coding: UTF-8 -*- class Fruit(object):   def __init__(self, color = "red", price = 0):     self.__color = color     self.__price = price   def __getattribute__(self, name):        # 获取属性的方法     return object.__getattribute__(self, name)   def __setattr__(self, name, value):     self.__dict__[name] = value if __name__ == "__main__":   fruit = Fruit("blue", 10)   print fruit.__dict__.get("_Fruit__color")    # 获取color属性   fruit.__dict__["_Fruit__price"] = 5   print fruit.__dict__.get("_Fruit__price")    # 获取price属性 __getitem__(): 如果类把某个属性定义为序列,可以使用__getitem__()输出序列属性中的某个元素.假设水果店中销售多钟水果,可以通过__getitem__()方法获取水果店中的没种水果 代码例子: #!/usr/bin/python # -*- coding: UTF-8 -*-class FruitShop:    def __getitem__(self, i):   # 获取水果店的水果      return self.fruits[i]    if __name__ == "__main__":   shop = FruitShop()   shop.fruits = ["apple", "banana"]   print shop[1]   for item in shop:        # 输出水果店的水果     print item, 输出为: banana apple banana  __str__(): __str__()用于表示对象代表的含义,返回一个字符串.实现了__str__()方法后,可以直接使用print语句输出对象,也可以通过函数str()触发__str__()的执行.这样就把对象和字符串关联起来,便于某些程序的实现,可以用这个字符串来表示某个类 代码例子: #!/usr/bin/python # -*- coding: UTF-8 -*- class Fruit:      '''Fruit类'''        #为Fruit类定义了文档字符串   def __str__(self):     # 定义对象的字符串表示     return self.__doc__ if __name__ == "__main__":   fruit = Fruit()   print str(fruit)      # 调用内置函数str()出发__str__()方法,输出结果为:Fruit类   print fruit         #直接输出对象fruit,返回__str__()方法的值,输出结果为:Fruit类 __call__(): 在类中实现__call__()方法,可以在对象创建时直接返回__call__()的内容.使用该方法可以模拟静态方法 代码例子: #!/usr/bin/python # -*- coding: UTF-8 -*- class Fruit:   class Growth:    # 内部类     def __call__(self):       print "grow ..."   grow = Growth()   # 调用Growth(),此时将类Growth作为函数返回,即为外部类Fruit定义方法grow(),grow()将执行__call__()内的代码 if __name__ == '__main__':   fruit = Fruit()   fruit.grow()     # 输出结果:grow ...   Fruit.grow()     # 输出结果:grow ...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯蓝鲸如何打造出无可替代的运维团队?
上一篇《腾讯蓝鲸是怎样在腾讯诞生的?》一文中,我们谈到了腾讯蓝鲸的转型背景和设计思路。其实在腾讯游戏的内部,有多个应用运维中心,十几个应用运维组,他们各自支持着不同的业务,各自处于不同的发展阶段和能力水平。
嘉为蓝鲸
2018/12/21
2.4K0
运维遇上中台,送分或送命?而我理解的运维中台是这样
前段时间有篇文章朋友圈疯传,【中台搞了2年,项目叫停,CIO被裁!本以为中台是道送分题,没想到是送命题!】。从结果来说,这个项目肯定是失败的,文章中透露出中台是“最短的笑话”和”玄学”之类的表达。很多时候把中台看成一个技术课题,但做着做着发现不对,它又是一个组织课题和业务课题。在前不久的【数字化奇葩说】第一期关于ERP和中台的讨论,我也作为嘉宾参与并发表了个人观点【见文末】。其实想表达的是,能和中台扯上关系的太多了,回到运维领域,是否有一个运维中台存在?它是否是个玄幻话题?抑或是为了概念而概念?如果有,我们该如何抽丝剥茧的理解它呢?
用户1593318
2020/06/10
1.4K1
2023爱分析·中国城市轨交智能运维市场厂商评估报告:逸迅科技
轨道交通是我国国民经济的命脉和交通运输的骨干网络,不仅承担了绝大部分国家战略、经济物资的运输,同时承担着客运运输职能,在促进我国资源输送、加强经济区域交流、解决城市交通拥挤等方面发挥了巨大作用。
爱分析ifenxi
2023/04/14
5210
你的数智化底座物尽其用了吗?
在数智化转型过程中,构建具备领先技术能力,能够与企业业务充分融合的数智底座是企业取得转型成功的重要前提条件。但数智底座建成后,这个平台的使命并不意味着已经完成。一方面,平台需要动态且及时的适配企业不断变化的业务需求,以更少的投入开发出新的企业应用。另外一方面,也需要将平台充分用起来,包括平台上数据的应用,不同应用系统以及与外部系统的链接,基于平台的成果沉淀与持续创新等。
深度学习与Python
2024/01/04
2060
你的数智化底座物尽其用了吗?
如何打造运维团队不可替代的“L”型价值体系-下篇
你也许可以听听腾讯蓝鲸对于两个问题的解答,或许能够帮你和你的团队拨云见日、一扫愁云,看清未来的方向和出路。
嘉为蓝鲸
2018/12/21
1.6K0
运维转型 | 运维人不再只是“救火英雄”
各行各业都开启了数字化转型的进程,运维团队在这种时代的浪潮中又该何去何从?我在帮助一些企业落地了运维技术平台之后,开始反思这个问题,并将所思所想整理成本篇文章。
嘉为蓝鲸
2020/02/05
3.2K0
运维转型 | 运维人不再只是“救火英雄”
开发和运维的关系,实施和运维的区别
随着网络的发展,想要把企业网站建设好,建设完成后运营好实现盈利,就需要很多人员的支持,其中运维岗位和开发岗位尤其重要。
chenchenchen
2019/09/03
11.4K0
IT运维支持如何转化为服务
关于IT服务能力的介绍,本期标题中主动式、可量化、构建IT运营服务三个关键词概括了我对IT服务能力的理解,其中IT运营服务在上一篇《IT运营转型中的ITOM》作了一些分析,本篇从ITIL、ISO20000、ITSS方法论对服务做补充。另外,IT服务能力主要以ITSM方式提供IT服务,关于ITSM的实现方式在之前关于servicenow的文档中也作了介绍,本篇不介绍在ITSM上的服务具体实现,而是从主动式、可量化两个角度进行扩展。
彭华盛
2020/03/06
1.8K0
低代码!解锁运维开发新姿势,人人都是OpsDev
这几年运维能力平台化发展得特别快,基本上摆脱了过去的脚本时代和手工作业时代,大部分的工作都是依赖运维平台进行。无论是自建还是共建,都能看到运维能力平台化,逐渐成为主流。但我们不得不正视几个现实:IT变化特别快,业务所依赖的新技术不断涌现,由此运维平台的演进也要快速跟上,如监控领域的工具变化;运维平台的碎片化已经成为传统企业的痛点之一,能否提供技术解决方案实现能力的快速整合,挑战和必要性相伴相随;历史遗留平台不能直接废弃,如何把它们的能力糅合到整体体系中。
智能运维圈
2021/05/27
7830
低代码!解锁运维开发新姿势,人人都是OpsDev
二三线互联网公司怎么做好研发效能
这是「研发效能团队规模、职能划分和优劣势分析」系列的第四篇。上篇文章「中小互联网公司研发效能团队规模、职能划分和优劣势分析」主要分析产研团队在200人以下的中小公司现状以及给出一些建议。本篇文章主要分析产研团队在1000人规模的二三线中型互联网公司研发效能现状,并结合自己的切身体会,在组织架构、工作职责、优劣势、以及怎么干怎么拿到结果,给出了自己的一些建议。
laofo
2022/10/25
6290
二三线互联网公司怎么做好研发效能
数据工程:从数据到价值
随着企业数字化转型的不断开展,企业对数据越来越重视、对数据的诉求越来越丰富。 尽管数字化转型对于市场来说并不是一个新鲜事物,从技术视角来看,人工智能与大数据相关技术仍处于创新阶段,各行业正在寻找和探索价值场景与新兴技术融合的平衡点,希望在新兴技术的加持下能够在激烈的竞争中占据有利位置。 对于企业中需要直接面对或完成数据工作的负责人来说,需要有一套切实可行的方式方法来确保数据 工作能够保质保量的顺利开展、保障企业在数据领域的投入能够有价值产出。这样一套行之有效的方式方法我 们称为“数据工程”,而该体系的落地过
深度学习与Python
2023/04/30
4150
数据工程:从数据到价值
日志数据于可观测的意义及日志运维场景和工具实践
首先我们来看一个企业中比较普遍的现象,当系统发生故障时,运维人员通常关注指标类数据,而研发人员更“钟情“于日志数据,为什么会有这种区别呢?
嘉为蓝鲸
2023/03/22
1.1K0
日志数据于可观测的意义及日志运维场景和工具实践
从鹿晗关晓彤恋情事件看运维的节假日准备工作
织云平台团队
2017/10/10
3K0
从鹿晗关晓彤恋情事件看运维的节假日准备工作
以“1+3”范式打造线网级多专业智能运维体系,全面提升城市轨交运营质量与效率 | 案例研究
随着城市轨交运营线网不断完善及市场化运营进程逐步加快,轨道交通行业中的甲方主体呈现多元化趋势。传统甲方以政府为主导的地铁运营公司或者地铁建设公司等业主单位为主,但是随着各地方政府加码基建投资,财政压力加大,为了降低成本、提高效率、盘活资产,开始大力引入社会资本对多条线路进行市场化和商业化运营。因此,各类专业的第三方运营公司积极参与到城市轨道交通市场中来。
爱分析ifenxi
2023/05/19
3470
以“1+3”范式打造线网级多专业智能运维体系,全面提升城市轨交运营质量与效率 | 案例研究
银行SRE转型:如何突破传统运维困境,打造高效团队
摘要:银行SRE团队的建设是应对数字化转型挑战的关键策略。本篇文章详细分析了传统运维与SRE的差异,并通过分阶段的转型路径说明了如何从规划到核心能力建设,再到全覆盖推广,逐步构建高效的SRE团队。在这一过程中,SRE团队不仅是技术升级的执行者,更是组织变革的推动者,为银行的长期可靠性和创新能力提供保障。
嘉为蓝鲸
2025/02/08
1640
AIOps赋能微服务:打造高效稳定的运维体系
一直想讲讲我做稳定性相关的经验和总结,稳定性建设到底要怎么讲,其实范围还是比较广泛的,于是我想重点从两方面来讲,一部分从运维体系谈谈我的看法,一部分
小程故事多
2024/12/25
4360
云端微服务架构下的运维思考
本文围绕微服务架构的特点与发展趋势,结合微信业务在微服务架构上的探索、应用、改进与提升,阐述运维如何应对业务在微服务架构环境下的各种挑战。
Frank
2018/04/18
3.5K13
云端微服务架构下的运维思考
云计算和 AI 时代下的运维转型
花名“谦益”,是公众号“Forrest 随想录”的作者,多届 ArchSummit 运维专题明星讲师和优秀出品人,TGO 杭州分会会员。目前专注于云计算和人工智能时代的运维转型和提升。加入蘑菇街之前,赵成在华为工作了七年,经历过开发、测试、运维以及一线客户服务等诸多岗位。他在不断的历练中迅速成长,培养了全面思考的意识和能力,积累了丰富的电信级和互联网业务研发及运维经验。
用户1682855
2018/07/31
1.4K0
AI Agent案例与实践全解析:字节智能运维(9/30)
AI Agent,即人工智能代理,是一种能够感知环境、进行决策和执行动作的智能实体。从定义来看,它有着深厚的发展渊源,其起源可以追溯到哲学领域。
正在走向自律
2024/12/23
1.9K0
AI Agent案例与实践全解析:字节智能运维(9/30)
基于知识图谱和人工智能驱动的企业深度智能运营和运维平台
本项目利用知识图谱、深度学习技术,为企业及个人构建企业知识库,从而实现集知识管理、知识发现、知识服务等功能于一身的企业深度智能运营和运维平台,为企业提供知识化、数字化和智能化的管理服务,致力于帮助传统中小企业解决构建自身专业知识库的构建和管理问题,通过开箱即用、人机智能交互的方式提高企业的运营、运维的效率。促进我国对人工智能,知识库领域的核心技术能力,极大推进了人工智能“三步走”战略。
机械视角
2019/10/23
4.7K0
基于知识图谱和人工智能驱动的企业深度智能运营和运维平台
推荐阅读
相关推荐
腾讯蓝鲸如何打造出无可替代的运维团队?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档