2017-07-18 47 views
-4

我想通過首先從列表中獲取副本來調用類方法。 另外,該方法正常工作。不能調用類metod

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

OUT:

Traceback (most recent call last): Putin File "E:/Dropbox/Pyton/Network/Client-Server/Server/testCandidate.py", line 5, in class testCandidate: File "E:/Dropbox/Pyton/Network/Client-Server/Server/testCandidate.py", line 10, in testCandidate print(voitingSistem.voiting.getCandidate(0).GetName()) AttributeError: 'str' object has no attribute '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; 
+0

最新的問題是什麼? – jacoblaw

+0

也可以修復縮進? – jacoblaw

+0

爲什麼'testCandidate'甚至是一個類?它只需要是一個功能,如果不是簡單的模塊級代碼。 – chepner

回答

0

candidats是名稱的列表。您無法檢索名稱(字符串)並直接使用該名稱來調用用戶定義的類的方法。你還沒有很好地定義你的目的,但我懷疑你想要的是這個班級擁有一個候選對象列表。在這種情況下,您需要類似於:

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

將它傳遞給實例而不是名稱。