在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定制类设计
Python定制类设计.pdf
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 定制词云
Python定制HTML格式电子邮件.zip
Python定制HTML格式电子邮件.rar
python 可定制化定时器源代码。 适用于python 初学者,以及调用python 模块有问题的同学
办公自动化-Python定制HTML格式电子邮件-Python源码示例.zip
Python定制发送带Excel附件的电子邮件.zip
Python定制发送带Excel附件的电子邮件.rar
办公自动化-Python定制发送带Excel附件的电子邮件-Python源码示例.zip
利用python进行Arcgis桌面定制的简单教程,包括Arcgis桌面定制与python的两方面介绍
Python 也可用作定制软件中的扩展程序语言。 本教程只是简单介绍了 Python 语言概念和功能。读者在阅读本教程时最好使用 Python 解释器以便随时动手练习。本教程中的所有示例都是相互独立的并可离线阅读。
使用Python定制词云-内含源码以及设计说明书(可以自己运行复现).zip
Python 还可以被用作定制应用程序的一门扩展语言。 本手册非正式的向读者介绍了 Python 语言及其体系相关的基本知识与概念。在学习实践中结合使用 Python 解释器是很有帮助的,不过所有的例子都是完整的,所以本手册...
1.Python3.5 openstack云计算专题 10课 Python3.5-01.云计算介绍.avi Python3.5-02.openstack组件介绍.avi Python3.5-03.keystone介绍.avi Python3.5-04.openstack组件通信流程.avi Python3.5-05.虚拟化介绍....
059 Python定制发送带ExCel附件的电子邮代060 Python定制HTML格式电子邮件… 061 调用网络接口查询车辆违章记录. 062批量重命名Word文档并转换为PDF......063 批量像Word一样按层级提取Word目录
HTML(Hypertext Markup Language)是一种用于创建和呈现网页的标记语言。它使用标签和属性来描述页面结构、内容和样式,被广泛应用于互联网上的网页设计和开发。