[英]TypeError: 'str' object is not callable … in OOP
因此,我只是在学习如何在一个调用中集成两个类,然后不断在print语句中收到错误:TypeError:'str'对象不可调用。 我需要创建一个str构造器吗? 还是我需要将两个类整合为一个类?
class Election:
def __init__(self, place, ballot):
self.place=place
self.ballot=ballot
def place(self):
return self.place
def getBallot(self):
return self.ballot
def getContest(self,number):
if self.ballot[number]:
return self.ballot[number]
else:
return False
def size(self):
return len(self.ballot)
def addContest(self,Contest):
self.ballot=self.ballot.append(Contest)
return self.ballot.get(Contest)
class Contest:
def __init__(self, position, cands):
self.position = position
self.cands = {"Jones":0,"Smith":0}
def getPosition(self):
return str(self.position)
def getCandidates(self):
return str(self.cands)
def getTally(self,candidate):
return self.cands[candidate]
def addTally(self,candidate,n_votes):
self.cands[candidate]=self.cands[candidate]+n_votes
def main():
elect = Election('TestTown', [
Contest('Senator', ['Jones', 'Smith']),
Contest('Mayor', ['Anderson', 'Green'])])
print(elect.place())
elect.getContest(1)# --> <Election object at 0x7f4b359cf5d0>
elect.getContest(1).getTally('Anderson')# --> 0
main()
该错误确切告诉您问题出在elect.place
: elect.place
是一个字符串,并且您试图通过添加()
来调用它。 elect.place
是字符串'TestTown'
。 简单地称其为正常。 不要这样 它不是函数或其他可调用的。
print(elect.place)
您可以摆脱吸气剂,例如def place
, def getBallot
, def getPosition
等等。 实例变量已经可以直接访问。
问题是这两行代码:
def place(self):
return self.place
瞧,现在您的Election
对象将self.place
作为字符串和函数。 在这种情况下,似乎字符串遮盖了函数。 要解决此问题,请遵循与其他类函数相同的约定,并将函数命名为getPlace
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.