python太多自我在课堂上

SRN*_*SRN 1 python algorithm self find

我正在学习Python OOP并尝试将Java类转换为Python类

有关Java代码google doc 链接,请参阅此PDF中的第15页

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)
Run Code Online (Sandbox Code Playgroud)

self这个课程有16个关键词.有没有更好的方法来写这门课?

Cla*_*diu 7

是的,您不想将这些变量分配给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
Run Code Online (Sandbox Code Playgroud)

应该:

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
Run Code Online (Sandbox Code Playgroud)

您只self在引用实例变量时使用,而不是在方法内部的任何变量时使用.