【发布时间】:2017-10-24 21:56:25
【问题描述】:
class String(object):
def __init__(self, text):
self.text = text
def __repr__(self):
return "{}".format(self.text)
def reverse(self):
return self.text[::-1]
def isPalindrome(self):
return (self.reverse(self.text) == self.text)
def main():
string = String(input("Write a String: "))
if(string.isPalindrome()):
print("The string {{}} IS a Palindrome".format(string))
else:
print("The string {{}} is NOT Palindrome".format(string))
我有一个代表String 的类,我想通过调用isPalindrome 方法来检查一个对象是否为回文。但是当我打电话给string.isPalindrome 时,我得到了这个错误:
Traceback (most recent call last):
File "palindrome.py", line 23, in <module>
main()
File "palindrome.py", line 17, in main
if(string.isPalindrome()):
File "palindrome.py", line 12, in isPalindrome
return (self.reverse(self.text) == self.text)
TypeError: reverse() takes 1 positional argument but 2 were given
【问题讨论】:
-
这个异常很清楚你的错误在哪里:
TypeError: reverse() takes 1 positional argument but 2 were given -
每当您从实例调用方法时,
self是一个隐含的参数。例如,在obj.reverse()中,obj在方法内自动变为self。
标签: python python-3.x class oop