将字符串存储到属性中

时间:2013-11-01 01:24:08

标签: python python-2.7

在我的课堂上,我们刚刚开始面向对象的Python(我们从学期开始就开始进行函数式编程)。

  

使用以下方法编写一个名为Sentence的新类:   一种__init__方法,它将句子的单个参数作为字符串,并将此字符串存储在属性中。假设句子没有标点符号。   一个get_words方法,它返回句子中的单词数。提示:split。   一种大写方法,它修改属性以确保首字母大写。什么都没有归还。提示:上限但仅限于第一个字符。

我对init方法部分感到困惑。 “将此字符串存储在属性中”是什么意思。

此外,与此hmwk任务无关,但为什么我们调用函数 init ?它有点像C编程中的“主要”功能(我来自C背景)。

2 个答案:

答案 0 :(得分:2)

在Python中,您可以随时向对象添加attributes。例如:

class Sentence(object):
    pass

sentence = Sentence()
sentence.the_string = "This is a sentence."

__init__方法是在构造类的实例时调用的特殊方法。例如,Sentence()最终调用__init__而没有额外的参数。因为我没有定义任何__init__,所以我得到了默认值,它什么也没做。但现在让我们定义一个,并给它一个额外的参数:

class Sentence(object):
    def __init__(self, the_sentence):
        pass

sentence = Sentence("This is a sentence.")
sentence.the_string = "This is a different sentence."

现在,唯一剩下的就是将属性创建转移到__init__方法中:

class Sentence(object):
    def __init__(self, the_sentence):
        self.the_string = the_sentence

sentence = Sentence("This is a sentence.")

实际问题是将字符串存储在 property 而不是属性中。这几乎肯定不是你实际应该学习的内容的一部分,而是你的教师或教科书或教程编写者实际上并不熟悉Python的标志。 property是一种在方法之上伪造正常属性的方式,您不应该在短时间内了解它。

答案 1 :(得分:1)

“将此字符串存储在属性中”表示类的属性,如下所示:

class Sentence(object):
    def __init__(self, sentence):
        self.my_sentence = sentence

在任何属于此类成员的函数中(以self作为参数),包括__init__,您可以将my_sentence称为“self.my_sentence

Python的“特殊”函数都带有前缀,后缀为__。该函数称为__init__,因为它是该类的初始化程序,在实例化类对象时调用。例如,如果您执行了Sentence(foo, bar),那么您将使用Sentence__init__作为参数调用foo的{​​{1}}方法。