zoukankan      html  css  js  c++  java
  • 构造函数的理解(构造函数与 init 方法)

    0. 构造函数与 init 方法

    • 构造方法内部禁止添加任何业务逻辑,如果有业务逻辑,请放在 init 方法中;

    1. 构造函数的参数

    以下为一个堆实现优先队列(堆的实现借助完全二叉树,而完全二叉树又可以通过线性表)的构造函数部分,提供一个表参数(默认为空的 list),使人可以为优先队列提供一些初始元素,

    class PriorityQueue:
        def __init__(self, elist=[]):
            self._elems = list(elist)
            ... 

    self._elems = list(elist) ,从 elist 出发做出一个表拷贝有以下一些意义:

    • 做拷贝使内部的表脱离原来的表,排除共享
    • 对默认情况,建立的是一个新的空表,

    2. 创建类对象实例,却不定义类对象实例的名称

    就像这样,

    class A: pass
    A()

    创建类对象实例,却不定义类对象实例的名称,仍然是有意义的,显然并不直接使用名称对对象进行操作。比如可以,在类的构造函数中,将 self 自身放进一个容器内部。

    >> class A:
    >>      def __init__(self, name, seq=[]):
    >>          self.name = name
    >>          seq.append(self)
    >> seq = []
    >> A('A1', seq)
    >> A('A2', seq)
    >> [s.name for s in seq]
    ['A1', 'A2']
  • 相关阅读:
    07_Go语言 ( 切片)
    06_Go语言( 数组)
    05_Go语言( 流程控制)
    04_Go语言( 运算符)
    02_Go语言(变量和常量)
    01_Go语言(环境的搭建)
    云电脑直播简单指南
    统信UOS共享打印机配置
    #插头dp#洛谷 5074 Eat the Trees
    #状压dp#洛谷 3959 [NOIP2017 提高组] 宝藏
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9424079.html
Copyright © 2011-2022 走看看