9.1 准备工作

python 3.0的所有类都会隐式地成为object的子类。

9.2 构造方法

在python中创建一个构造方法:只要把init方法的名字修改为魔法版本__init__即可。

>>> class FooBar:
def __init__(self):
self.somevar = 42
>>> f = FooBar()
>>> f.somevar
42

  __def__ :是析构方法,但是调用时机不确定,所以不建议使用。

  9.2.1 重写一般方法和特殊的构造方法

   子类方法可以覆盖父类的方法。

   构造函数覆盖后,如果不调用父类的构造函数,可能会导致有些父类的属性没有被初始化。

   下面两个小结是调用超类构造方法的两个解决方案。

  9.2.2 调用未绑定的超类构造方法

  

class SongBird(Bird):
def __init__(self): // 直接调用超类的构造方法
Bird.__init__(self)
XXXX

  9.2.3 使用super函数

  

class SongBird(Bird):
def __init__(self):
super(SongBrid, self).__init__()
self.sound = 'squawk!'
def sing(self):
XXX

9.3 成员访问

  9.3.1 基本的序列和映射规则

  __len__(self)

  __getitem__(self.key)

  __setitem__(self.key, value)

  __delitem__(self.key)

  9.3.2 子类化列表,字典和字符串

9.4 更多魔力

9.5 属性

  9.5.1 property函数

  size = property(getSize(), setSize())

  9.5.2 静态方法和类成员方法

  9.5.3 __getattr__, __setattr__和它的朋友们

  拦截对象的所有属性访问时可能的。

  __getattrbiute__:

  __getattr_(self, name)

  __setattr__(self, name, value)

  __delattr__(self, name)

9.6 迭代器

    __iter__ :

  9.6.1 迭代器规则

  9.6.2 从迭代器得到序列

9.7 生成器

  9.7.1 创建生成器

  9.7.2 递归生成器

  9.7.3 通用生成器

  9.7.4 生成器方法

  9.7.5 模拟生成器

9.8 八皇后问题

  9.8.1 生成器和回溯

  9.8.2 问题

  9.8.3 状态表示

  9.8.4 寻找冲突

  9.8.5 基本情况

  9.8.6 需要递归的情况

  9.8.7 打包

  

python学习(九) 魔法方法、属性和迭代器的更多相关文章

  1. Python学习8——魔法方法、特性和迭代器

    Python中很多名称比较古怪,开头和结尾都是两个下划线.这样的拼写表示名称有特殊意义,因此绝不要在程序中创建这样的名称.这样的名称中大部分都是魔法(方法)的名称.如果你的对象实现了这些方法,他们将在 ...

  2. Python学习之魔法方法

    Python中会看到前后都加双下划线的函数名,例如 __init__(self),这类写法在Python中具有特殊的含义.如果对象使用了这类方法中的某一个,那么这个方法将会在特殊的情况下被执行,然而几 ...

  3. 零基础学习python_魔法方法(41-48课)(迭代器)

    接下来这个为啥要叫魔法方法呢,额,这个嘛我是跟小甲鱼的视频取的名字一样的,因为会讲比较多杂的东西,有... 魔法方法详细阅读地址:http://bbs.fishc.com/thread-48793-1 ...

  4. python类之魔法方法

    python类之魔法方法: class A(object): def __init__(self,x): self.x = x def __neg__(self): print('-v') def _ ...

  5. python里的魔法方法1(构造与析构)

    魔法方法——构造与析构 1.python编程的魔法方法: (1)魔法方法总是被双下划线包围,例如__init__: (2)魔法方法是面向对象的python的一切. 2.__new__(class[,… ...

  6. python魔法方法-属性访问控制

    属性访问控制 所谓的属性访问控制就是控制点号访问属性的行为,而且不仅是类的外部,连类的内部也受控制,代码见真章,边看代码边解释: __getattr__(self, item) 定义当访问不存在的属性 ...

  7. python基础之魔法方法

    由于hexo自带的markdown渲染引擎对双下划线做了转义,在正文中看到的魔法方法前后都没有双下划线 setattr.getattr.delattr 可以拦截对对象属性的访问 setattr函数是用 ...

  8. Python中的魔法方法

    1.什么是魔法方法? 魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一 ...

  9. python_魔法方法(六):迭代器和生成器

    迭代器 自始至终,都有一个概念一直在用,但是我们却没来都没有人在的深入剖析它.这个概念就是迭代. 迭代的意思有点类似循环,每一次的重复的过程被称为迭代的过程,而每一次迭代得到的结果会被用来作为下一次迭 ...

  10. python中类的魔法方法

    __xx__这种方法,在Python中均称为魔法方法 1.__init__(self) 该方法的作用是初始化对象 在创建对象时被默认调用,不需要手动调节 self参数不需要开发者传递,解释器会自动将创 ...

随机推荐

  1. shell awk使用(转)

    #####awk  " 对每一行操作的代码块"  操作的文件  awk -F:   '{print $1,$2,$3,$4,$5}' helloworld.sh      打印字段 ...

  2. Java中使用Log的方法

    一.java自带log:java.util.logging.Logger使用三步曲 public class HelloLogWorld { private static String name = ...

  3. Juniper

    Juniper Networks[编辑]     Juniper Networks 公司类型 上市(NYSE:JNPR) 成立 1996年2月 代表人物 执行长:Shaygan Kheradpir技术 ...

  4. 016对象——__set __get get_class_methods get_class_vars

    <?php /** */ //http://phpbasic.com/004object/16.php?type=admin /*session_start(); $_SESSION['utyp ...

  5. C#文件与文件夹操作

    (转自:http://www.csharpwin.com/csharpspace/6649r3960.shtml) C#文件操作:C#追加文件 StreamWriter sw = File.Appen ...

  6. Struts2 用过滤器代替了 servlet ,???? 且不需要tomcat就可以直接做功能测试

    Struts2  用过滤器代替了 servlet ,????  且不需要tomcat就可以直接做功能测试

  7. 读书笔记-Ribbon源码分析

    @LoadBalanced注解用来给RestTemplate做标记,以使用负载均衡的客户端来配置. 通过搜索LoadBalancerClient可以发现,LoadBalancerClient是Spri ...

  8. 指针和引用在C++中应用

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  9. 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?

    题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树? 一开始的想法是直接递归构造,时间复杂度是指数上升:后来想法是找规律:先看例子: n = 1, 有一个元 ...

  10. 行为驱动开发BDD概要

    BDD脱胎于TDD 行为驱动开发(Behavior-Driven Development,简称BDD),是在测试驱动开发(Test-Driven Development,TDD)基础上发展而来的一种软 ...