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

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定制HTML格式电子邮件-Python源码示例.zip

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

    python 可定制化定时器

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

    2023最新教程【樵夫教你学Python】Python全套教程 Python基础

    Python全套教程 Python基础python基础课代码+文档2023最新教程【樵夫教你学Python】Python全套教程 Python基础python基础课代码+文档2023最新教程【樵夫教你学Python】Python全套教程 Python基础python基础课代码+...

    (实现的工具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实现的可定制策略拟人式三维装箱算法...

    Python-Pythonmode将Vim变成PythonIDE的一款多合一插件

    Python-mode提供了智能代码补全功能,它能够根据上下文提供可能的函数、类、变量等建议,帮助开发者快速输入代码。这大大减少了手动输入的时间,提高了编程效率。 2. **语法高亮**: 插件对Python代码进行语法...

Global site tag (gtag.js) - Google Analytics