`
_wyh
  • 浏览: 61364 次
社区版块
存档分类
最新评论

python的定制类

阅读更多

在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的值,结果会不同

 

 

0
0
分享到:
评论

相关推荐

    Python定制类设计.zip

    本资料"Python定制类设计.zip"中可能包含的是关于如何有效地设计和使用Python自定义类的详细指南,这将涵盖类的定义、继承、封装、多态等核心概念。 首先,让我们了解类的基本结构。在Python中,你可以通过使用...

    Python定制类设计.pdf

    Python定制类的设计允许开发者创建更加健壮和灵活的代码。通过这些魔术方法,我们可以使对象的行为更加符合预期,并且为对象的使用提供更加直观和方便的接口。这些技术在进行大规模数据处理、科学计算和人工智能项目...

    Python 定制HTML格式电子邮件 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 定制发送带Excel附件的电子邮件 Python源码Python 定制...

    Python项目源码实例060Python定制HTML格式电子邮件.zip

    Python项目源码实例060Python定制HTML格式电子邮件.zip

    Python项目源码实例059Python定制发送带Excel附件的电子邮件.zip

    Python项目源码实例059Python定制发送带Excel附件的电子邮件.zip

    办公自动化-Python定制HTML格式电子邮件-Python源码示例.zip

    这个"办公自动化-Python定制HTML格式电子邮件-Python源码示例.zip"压缩包包含了实现这一功能的相关源码,旨在帮助用户理解和应用Python进行邮件自动化处理。我们将探讨Python如何用来定制HTML格式的电子邮件,并通过...

    python 可定制化定时器

    Python中的可定制化定时器是实现自动化任务调度的重要工具,尤其对于初学者和需要处理模块调用问题的开发者来说,掌握这一技术非常有益。在Python中,我们可以利用内置的`threading`模块来创建定时器,它允许我们...

    (实现的工具python工具类)utils.rar

    自定义的日志工具类可能会包含对`logging`模块的封装,例如设置不同级别的日志(如DEBUG、INFO、WARNING、ERROR、CRITICAL),定制日志格式,以及控制日志输出的位置(如控制台、文件等)。 2. **CRC16校验**: ...

    利用python进行Arcgis桌面定制

    根据提供的文件内容,以下为利用Python进行ArcGIS桌面定制的知识点: 1. Add-in介绍: - Add-in是ArcGIS桌面应用中的一个轻量级扩展,允许用户方便地创建、共享、管理和安装扩展。 - 它比传统的.NET或JAVA扩展更...

    办公自动化-Python定制发送带Excel附件的电子邮件-Python源码示例.zip

    本压缩包提供的示例着重于如何使用Python定制发送带有Excel附件的电子邮件,这对于数据共享、报告分发等工作场景非常实用。以下是关于这个主题的详细知识点: 1. **Python的邮件发送库**:Python中有多个库可以用于...

    Python 零基础30天速通(小白定制版)(完结)

    这是一套非常适合小白入门的Python编程课,专为小白定制的Python新手入门课程,30节实战精讲,内容包含Python办公自动化、Python爬虫、数据分析、数据可视化等Python必修课程,只要30天就能让你脱胎换骨,整个学习...

    python tutoral python入门指南

    - **定制化应用程序**:Python 也适用于作为定制化应用程序的扩展语言,允许开发者根据具体需求定制功能。 ### Python 教程介绍 - **非正式介绍**:此教程采用非正式的方式向读者介绍 Python 语言的基本概念和特性...

    testResults_Python定制的接口测试源码_自动化测试_趋势_AB测试_接码_

    这个名为"testResults_Python定制的接口测试源码_自动化测试_趋势_AB测试_接码_"的压缩包文件,显然包含了与自动化接口测试相关的资源,特别是用Python语言定制的代码。下面将详细解析这些关键词,探讨相关知识点。 ...

    PythonForDelphi for Python3.7 delphi7 + XE2

    而"python4delphi-master"则可能是项目的主分支源码,包含了完整的PythonForDelphi项目,供开发者研究和定制。 集成PythonForDelphi的过程包括设置项目路径、添加Python库引用、编写Delphi调用Python的代码等步骤。...

    python-3.11.2-docs.epub Python学习资料 Python文档

    Python 也可用作定制软件中的扩展程序语言。 本教程只是简单介绍了 Python 语言概念和功能。读者在阅读本教程时最好使用 Python 解释器以便随时动手练习。本教程中的所有示例都是相互独立的并可离线阅读。

    ktv.zip_KTV_KTV点歌系统_python_python 界面系统_python分类

    总的来说,这个"ktv.zip"项目展示了Python在开发交互式应用程序方面的强大能力,结合了数据库管理、GUI编程和分类算法,为KTV环境提供了定制化的点歌解决方案。无论是对于学习Python编程的初学者还是寻求实践项目的...

    两句话带你完全掌握Python最难知识点——元类!

    然而,一旦理解了元类的工作原理,你就能更深入地掌握Python的精髓,甚至可以创建出更加灵活和定制化的类。下面,我们就通过两句话来揭开元类的神秘面纱。 第一句:元类是创建类的对象。在Python中,一切皆为对象,...

    Python实现的可定制策略拟人式三维装箱算法源码+文档说明

    Python实现的可定制策略拟人式三维装箱算法源码+文档说明Python实现的可定制策略拟人式三维装箱算法源码+文档说明Python实现的可定制策略拟人式三维装箱算法源码+文档说明Python实现的可定制策略拟人式三维装箱算法...

Global site tag (gtag.js) - Google Analytics