有没有办法监控自我。{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
答案 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超出范围,您可以考虑该怎么做。你还有其他问题吗?