热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【python学习笔记】9.魔法方法、属性和迭代器

【python学习笔记】9.魔法方法、属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法__init__(self): 构造方法,创建对象时候自动执行

【python学习笔记】9.魔法方法、属性和迭代器
  • 魔法方法:xx, 收尾各有两个下划线的方法
  • __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数,
  • 父类构造方法不会被自动调用, 可以通过super函数(super(FatherCall, self).init())或者未绑定构造方法,来调用父类的构造方法。super是有在__metaclass__=type时才可以使用, 
  • 有多个父类时,super能保证每个父类的构造方法都被执行
  • __del__: 析构方法:对象被回收之前执行
  • 基本的序列和映射规则:
魔法方法集合方法
__len(self)__(self)len(a)
__getitem__(self,key)a[i]取值
__setitem__(self,key)a[i]赋值
__delitem__(self,key)del a[i] 删除
  • propery(fget,fset,fdel,doc__):创建新的属性,该属性的取值,赋值,删除操作会执行对应的fget,fset,fdel函数


class Rectangle(object):def __init__(self):self.width=0self.heigth=0def setSize(self, size):self.width, self.heigth = sizedef getSize(self):return self.width, self.heigthsize = property(getSize,setSize)r = Rectangle()
r.width=1
r.heigth=3print r.getSize()
print r.sizer.size=99,44print r.getSize()
print r.size

  • 静态方法:Staticmethod修饰,没有self参数,需要cls参数,并且能够被类本事调用
  • 类成员方法:Classmethod修饰,

  • 迭代器: 实现了next方法的对象是迭代器

  • __iter__:返回一个迭代器,inter方法也可以反悔迭代器

  • 迭代器可用于for语句和list函数

class Fibs:def __init__(self):self.a = 0self.b = 1def next(self):self.a,self.b=self.b,self.a+self.breturn self.adef __iter__(self):return selffibs=Fibs()
for f in fibs:if f > 1000:print fbreak------
1597

  • 生成器:任何包含yield语句的函数被称为生成器,当他被调用时候,会返回一个迭代器,每次请求一个值,就会执行生成器中的代码,直到遇到一个yield或者return语句,,yiled语句生成一个值,return意味着生成器停止执行

def flatten(nested):for sublist in nested:for element in sublist:yield elementnested=[[1,2],[3,4],[5]]
for num in flatten(nested):print numprint list(flatten(nested))it=flatten(nested)
print it.next()------------
1
2
3
4
5
[1, 2, 3, 4, 5]
1


转:https://www.cnblogs.com/vc60er/p/7758427.html




推荐阅读
  • 本文介绍了如何使用 Python 的 Bokeh 库在图表上绘制菱形标记。Bokeh 是一个强大的交互式数据可视化工具,支持丰富的图形自定义选项。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 本文深入探讨了 Python 中的循环结构(包括 for 循环和 while 循环)、函数定义与调用,以及面向对象编程的基础概念。通过详细解释和代码示例,帮助读者更好地理解和应用这些核心编程元素。 ... [详细]
  • 本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ... [详细]
  • 本文提供了一系列Python编程基础练习题,涵盖了列表操作、循环结构、字符串处理和元组特性等内容。通过这些练习题,读者可以巩固对Python语言的理解并提升编程技能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 深入解析JMeter中的JSON提取器及其应用
    本文详细介绍了如何在JMeter中使用JSON提取器来获取和处理API响应中的数据。特别是在需要将一个接口返回的数据作为下一个接口的输入时,JSON提取器是一个非常有用的工具。 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文探讨了在Java中实现系统托盘最小化的两种方法:使用SWT库和JDK6自带的功能。通过这两种方式,开发者可以创建跨平台的应用程序,使窗口能够最小化到系统托盘,并提供丰富的交互功能。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 信用评分卡的Python实现与评估
    本文介绍如何使用Python构建和评估信用评分卡模型,涵盖数据预处理、模型训练及验证指标选择。附带详细代码示例和视频教程链接。 ... [详细]
author-avatar
爱文小宝的贇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有