我正在学习 Python OOP 并尝试将 Java 类转换为 Python 类
请参阅此 PDF 中的第 15 页了解 Java 代码 google 文档link https://docs.google.com/open?id=1eqzajOqxWtR7uLZqWI1TMhqK2J6tCR_bJkEobb064WEkIR73REu916gcSlug
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
,这些是局部变量:
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
应该:
def union(self,p,q):
pid = self.id[p]
qid = self.id[q]
for i in range(len(self.id)):
if self.id[i] == pid:
self.id[i] = qid
你只使用self
引用实例变量时,而不是方法内部的任何变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)