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 超出范围该怎么办。您还有其他问题吗?
是否有一些方法可以在调试时监控 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 超出范围该怎么办。您还有其他问题吗?