python IDLE调试器自变量

时间:2017-12-09 15:40:19

标签: python debugging python-idle

有没有办法监控自我。{name}在调试时没有下面的额外行,也有人有想法(良好做法)如何省略自我。在代码中的一部分(在其他方法的主体的第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

1 个答案:

答案 0 :(得分:1)

由于之后需要n,请保存。据我所知,__init__将self._id设置为range(n)(list(3.x中的范围(10)),因此其余部分可以压缩。

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

在任何情况下,在方法中只查找一次self属性,如l = self._id并使用直接崇敬,此后l,是标准做法,而不是变通方法或仅调试的事情。我会按如下方式写联盟:

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超出范围,您可以考虑该怎么做。你还有其他问题吗?