我正在学习Python-OOP并尝试将Java类转换为Python类
关于Java代码,请参阅本PDF第15页google doclink
class QuickFindUF:
"""docstring for QuickFindUF"""
def __init__(self, n):
self.id = []
for e in range(n):
self.id.append(e)
def connected(self,p,q):
return self.id[p]==self.id[q]
def union(self,p,q):
self.pid = self.id[p]
self.qid = self.id[q]
for i in range(len(self.id)):
if(self.id[i]==self.pid):
self.id[i]=self.qid
quf = QuickFindUF(9)
quf.union(3,4)
print quf.connected(3,4)
这个类中有16个self
关键字。有没有更好的方法来写这门课?在
是的,您不想将这些变量赋给
self
,这些是局部变量:应该是:
^{pr2}$当引用实例变量时,只使用
self
,而不是方法中的任何变量。在您可以使用一些快捷方式:
注意,
__init__
中的简化,如@katrielex所指出的,以及使用enumerate
而不是在range(len(self.id))
上循环。在使用快捷方式可能更有效(因为您保存了对
__getattr__
的调用),但不应损害可读性。在相关问题 更多 >
编程相关推荐