在python中,名字形如__xxx__的函数或方法,可以给类定制一些特殊的属性,使该类的实例在调用方法和属性的时候更简单方便。
下面给Student类添加各种。
class Student(object): #下面是各种方法 #实例对象: stu = Student()
1,__slots__
作用:限制实例的属性范围,要求实例只能给哪几个属性赋值,不能继承给子类
参数:无。这是一个类的属性
__slots__ = ('name', 'age') stu.name = "Curry" # 正确 stu.age = 28 # 正确 stu.number = 35 # 错误,发生AttributeError异常
给__slots__赋予了一个不可变的列表。该__slots__是限制Student实例只能有name和age两个属性
2,__str__
作用:打印实例时,打印出的是该实例__str__方法中返回的字符串。
参数:只有一个self
def __str__(self): return 'this student name is %s, age is %s' % (self.name, self.age) print(stu)
结果为:
this student name is Curry, age is 28
3,__getattr__
作用:实例在调用未定义的一个属性或方法时,就会报错,使用getattr可以给这些未定义的属性或方法指定一个默认值
参数:两个,一个是对象本身,self,另一个是attr,为实例调用的该实例不存在的属性的字符串形势。
def __getattr__(self, attr): if attr=='number': return 35 else: return attr print(stu.number) print(stu.hahahaha)
结果为:
35 hahahaha
刚刚在__getattr__中定义了,如果该不存在的属性是number,则返回35,否则,返回该不存在属性本身
4,__iter__,__next__
作用:可以实现实例的迭代,iter返回的是迭代的对象,迭代该实例时,会不断调用next,知道next返回StopIteration
参数:iter和next都是self
def __iter__(self): return self def __next__(self): self.age += 1 if self.age > 50: raise StopIteration() return self.name + str(self.age) for value in stu: print(value)
结果为:
Curry29 Curry30 Curry31 Curry32 Curry33 Curry34 Curry35 Curry36 Curry37 Curry38 Curry39 Curry40 Curry41 Curry42 Curry43 Curry44 Curry45 Curry46 Curry47 Curry48 Curry49 Curry50 Curry52
根据next中的定义,只有当self.age>50使,该循环才会结束,否则,按next返回的值依次输出
5,__call__
作用:定义一个以实例自己的名字为方法名,直接调用该名字的方法。
参数:self
def __call__(self): print('name is %s, age is %s, number is %s' % (self.name, self.age, self.number)) stu()
结果为:
name is Curry, age is 29, number is 35
__call__返回的是该实例当时的name,age等等,如果之前就改变了name, age的值,结果会不同
相关推荐
本资料"Python定制类设计.zip"中可能包含的是关于如何有效地设计和使用Python自定义类的详细指南,这将涵盖类的定义、继承、封装、多态等核心概念。 首先,让我们了解类的基本结构。在Python中,你可以通过使用...
Python定制类的设计允许开发者创建更加健壮和灵活的代码。通过这些魔术方法,我们可以使对象的行为更加符合预期,并且为对象的使用提供更加直观和方便的接口。这些技术在进行大规模数据处理、科学计算和人工智能项目...
Python 定制HTML格式电子邮件 Python源码Python 定制HTML格式电子邮件 Python源码Python 定制HTML格式电子邮件 Python源码Python 定制HTML格式电子邮件 Python源码Python 定制HTML格式电子邮件 Python源码Python ...
Python 定制发送带Excel附件的电子邮件 Python源码Python 定制发送带Excel附件的电子邮件 Python源码Python 定制发送带Excel附件的电子邮件 Python源码Python 定制发送带Excel附件的电子邮件 Python源码Python 定制...
这个"办公自动化-Python定制HTML格式电子邮件-Python源码示例.zip"压缩包包含了实现这一功能的相关源码,旨在帮助用户理解和应用Python进行邮件自动化处理。我们将探讨Python如何用来定制HTML格式的电子邮件,并通过...
Python中的可定制化定时器是实现自动化任务调度的重要工具,尤其对于初学者和需要处理模块调用问题的开发者来说,掌握这一技术非常有益。在Python中,我们可以利用内置的`threading`模块来创建定时器,它允许我们...
Python全套教程 Python基础python基础课代码+文档2023最新教程【樵夫教你学Python】Python全套教程 Python基础python基础课代码+文档2023最新教程【樵夫教你学Python】Python全套教程 Python基础python基础课代码+...
自定义的日志工具类可能会包含对`logging`模块的封装,例如设置不同级别的日志(如DEBUG、INFO、WARNING、ERROR、CRITICAL),定制日志格式,以及控制日志输出的位置(如控制台、文件等)。 2. **CRC16校验**: ...
这是一套非常适合小白入门的Python编程课,专为小白定制的Python新手入门课程,30节实战精讲,内容包含Python办公自动化、Python爬虫、数据分析、数据可视化等Python必修课程,只要30天就能让你脱胎换骨,整个学习...
根据提供的文件内容,以下为利用Python进行ArcGIS桌面定制的知识点: 1. Add-in介绍: - Add-in是ArcGIS桌面应用中的一个轻量级扩展,允许用户方便地创建、共享、管理和安装扩展。 - 它比传统的.NET或JAVA扩展更...
本压缩包提供的示例着重于如何使用Python定制发送带有Excel附件的电子邮件,这对于数据共享、报告分发等工作场景非常实用。以下是关于这个主题的详细知识点: 1. **Python的邮件发送库**:Python中有多个库可以用于...
- **定制化应用程序**:Python 也适用于作为定制化应用程序的扩展语言,允许开发者根据具体需求定制功能。 ### Python 教程介绍 - **非正式介绍**:此教程采用非正式的方式向读者介绍 Python 语言的基本概念和特性...
这个名为"testResults_Python定制的接口测试源码_自动化测试_趋势_AB测试_接码_"的压缩包文件,显然包含了与自动化接口测试相关的资源,特别是用Python语言定制的代码。下面将详细解析这些关键词,探讨相关知识点。 ...
而"python4delphi-master"则可能是项目的主分支源码,包含了完整的PythonForDelphi项目,供开发者研究和定制。 集成PythonForDelphi的过程包括设置项目路径、添加Python库引用、编写Delphi调用Python的代码等步骤。...
Python 也可用作定制软件中的扩展程序语言。 本教程只是简单介绍了 Python 语言概念和功能。读者在阅读本教程时最好使用 Python 解释器以便随时动手练习。本教程中的所有示例都是相互独立的并可离线阅读。
总的来说,这个"ktv.zip"项目展示了Python在开发交互式应用程序方面的强大能力,结合了数据库管理、GUI编程和分类算法,为KTV环境提供了定制化的点歌解决方案。无论是对于学习Python编程的初学者还是寻求实践项目的...
然而,一旦理解了元类的工作原理,你就能更深入地掌握Python的精髓,甚至可以创建出更加灵活和定制化的类。下面,我们就通过两句话来揭开元类的神秘面纱。 第一句:元类是创建类的对象。在Python中,一切皆为对象,...
Python-mode提供了智能代码补全功能,它能够根据上下文提供可能的函数、类、变量等建议,帮助开发者快速输入代码。这大大减少了手动输入的时间,提高了编程效率。 2. **语法高亮**: 插件对Python代码进行语法...
类装饰器可以用来修改或增强类的行为,而元类则可以用来定制类的创建过程。 总的来说,这个学习资源包将全面覆盖Python类的各个方面,无论是初学者还是有一定经验的开发者,都能从中获益。通过深入学习和实践,你将...