构造函数的理解

来源:互联网 发布:exceed2008是什么软件 编辑:程序博客网 时间:2024/05/22 17:20

1. 构造函数的参数

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

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

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

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

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

就像这样,

class A: passA()

创建类对象实例,却不定义类对象实例的名称,仍然是有意义的,显然并不直接使用名称对对象进行操作。比如可以,在类的构造函数中,将 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']
0 0
原创粉丝点击