无法调用类方法

时间:2017-07-18 22:05:38

标签: python

我试图通过首先从列表中获取副本来调用类方法。 另外,该方法可以正常工作。

class testCandidate:
    voitingSistem=VoitingSystem()
    voitingSistem.addCandidate("Putin")
    candidate=Candidate("Putin")
    print(candidate.GetName())
    print(voitingSistem.voiting.getCandidate(0).GetName())

OUT:

  

追踪(最近一次调用最后一次):普京文件   " E:/Dropbox/Pyton/Network/Client-Server/Server/testCandidate.py" ;, line   5,在       class testCandidate:File" E:/Dropbox/Pyton/Network/Client-Server/Server/testCandidate.py" ;, line   10,在testCandidate中       print(voitingSistem.voiting.getCandidate(0).GetName())AttributeError:' str'对象没有属性' GetName'

class VoitingSystem:
    users=[];
    voiting="";

    def __init__(self) -> None:
        self.voiting=Voiting("Voiting1");
        super().__init__()

    def addCandidate(self, name):
        candidate=Candidate(name)
        self.voiting.candidats.append(candidate)
        return None


    def getCandidate(self,index):
        return self.voiting.getCandidate(index)


class Voiting(object):
    name=""
    candidats=[]

    def __init__(self,Name) -> None:
        super().__init__()
        self.name=Name


    def getCandidates(self):
        return self.candidats;

    def getCandidate(self,index) -> Candidate:
        return self.candidats[index];

    def addCandidate(self,Name):
        self.candidats.append(Name)


class Candidate:
    name="";
    voices=0;

    def __init__(self,Name):
        self.name=Name;
        self.voices=0;


    def SetName(self,Name):
        self.name=Name;

    def GetName(self):
        return self.name;

1 个答案:

答案 0 :(得分:0)

candidats是一个名单。您无法检索名称(字符串)并直接使用它来调用用户定义的类的方法。你还没有很好地定义你的目的,但是我怀疑你想要的是让类保存一个候选对象列表。在这种情况下,您需要以下内容:

def addCandidate(self, candidate):
    self.candidats.append(self, candidate)

传递实例而不是名称。