【发布时间】:2017-03-20 02:20:06
【问题描述】:
我正在处理一个 Python 类的问题集。我们被介绍给班级。我正在尝试(A)使用单个参数字符串创建一个名为 Sentence 的类,并创建一个将句子存储为字符串的实例变量。 (B) 然后为该类分配访问器方法:getSentence(以字符串形式返回句子)、getWords(返回句子中的单词列表)、getLength(返回句子中的字符数)、getNumWords(返回句子中的单词数)。以下是我迄今为止的尝试:
line = "This Tuesday is Election Day"
class Sentence:
def __init__(self, text, string, words, length, num):
self.text = sentence
self.string = str(self.text)
self.words = self.text.split()
self.length = len(self.text)
self.num = len(self.words)
def getSentence(self):
return self.string
def getWords(self):
return self.words
def getLength(self):
return self.length
def getNumWords(self):
return self.num
line.getWords()
感谢您的宝贵时间。
下面是更新后的代码:
class Sentence:
def __init__(self, string):
self.astring = str(string)
def getSentence(self):
return self.astring
def getWords(self):
return (self.astring).split()
def getLength(self):
return len(self.astring)
def getNumWords(self):
return len(self.getWords())
string = Sentence("The Election is tomorrow")
print (string.getSentence())
print (string.getWords())
print (string.getLength())
print (string.getNumWords())
【问题讨论】:
-
成功了吗?有什么问题?
-
它不像我想象的那样工作。我在上面创建了一个示例字符串“This Tuesday...”,当我输入
line.getSentence()时,我收到“AttributeError:'str' object has no attribute 'getSentence'” -
这是您的第一个问题。您想将字符串传递给类以进行进一步处理。一个简单的测试是
foo = Sentence(line)。这将失败,因为Sentence.__init__需要一堆变量。但是string, words, length, num是由类计算的,因此您不应将它们传递给初始化程序。所以把它们拿出来。然后你会遇到下一个问题......这就是所谓的“测试驱动开发”。编写中断测试、修复问题、编写更多测试。
标签: python class methods instance-variables accessor