python IDLE 调试器自变量

python IDLE debugger self variable

是否有一些方法可以在调试时监控 self.{name} 而无需下面的额外行,并且有人知道(良好做法)如何省略 self.部分代码(在其他方法主体的第 4 行之后),它会使它更具可读性?

class QuickFindUf(object):

    def __init__(self, n):
        self._id = []

        for i in xrange(n):
            self._id.append(i)

    def connected(self, p, q):
        return self._id[p] == self._id[q]

    def union(self, p, q):
        pid = self._id[p]
        qid = self._id[q]

        l = self._id # debug only

        for i in xrange(len(self._id)):
            if self._id[i] == pid: 
                self._id[i] = qid

后面需要用到n,先收藏一下。据我所知,__init__ 将 self._id 设置为 range(n) (list(range(10) in 3.x),因此其余部分可以压缩。

def __init__(self, n):
    self.n = n
    self._id = range(n)  # list(range(n)) in 3.x.

在任何情况下,在方法中只查找一次 self 的属性,如 l = self._id 并使用直接的敬意,这里 l,此后,是标准做法,而不是解决方法或 debug-only 东西。我会写联合如下:

def union(self, p, q):
    l = self._id
    pid = l[p]
    qid = l[q]
    for i in xrange(n):
        if l[i] == pid: 
            l[i] = qid

您可能会考虑如果 p 或 q 超出范围该怎么办。您还有其他问题吗?