zoukankan      html  css  js  c++  java
  • python学习(九) 魔法方法、属性和迭代器

    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 打包

      

  • 相关阅读:
    Javajdbc
    Web Project添加Struts2框架
    CSS去除免费虚拟主机的广告心得分享
    List<T>采用delegate快速实现排序、查找等操作
    ASP.NET视频采集站核心技术分析(附送对付搜索引擎蜘蛛的贱招)
    Azure完整实例:在线日程表
    [发布]ClouderaCMS: 基于Windows Azure的开源CMS
    获取配置文件节点的值
    asp.net DataGrid排序
    checkbox 获取选中的值
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7267661.html
Copyright © 2011-2022 走看看