是在python中继承的构造函数吗

约翰·布拉兹

我正在研究MIT 6.00 OCW问题集之一,并且我有以下代码...

class Trigger(object):
    def evaluate(self, story):
        """
        Returns True if an alert should be generated
        for the given news item, or False otherwise.
        """
        raise NotImplementedError

# Whole Word Triggers
# Problems 2-5

# WordTrigger

class WordTrigger(Trigger):
    def __init__(self, word):
        self.word = word

    def is_word_in(self, text):
        word = self.word.lower()
        text = text.lower()

        #Remove punc and split text
        for ch in string.punctuation:
            text = text.replace(ch, ' ')
        splitText = text.split(' ')

        #Check if word is in text
        return word in splitText


# TitleTrigger

class TitleTrigger(WordTrigger):
##    def __init__(self, word):
##        self.word = word

    def evaluate(self, story):
        return self.is_word_in(story.get_title())

我最初没有注释掉构造函数,TitleTrigger()但是当我运行提供的测试脚本时,当测试实用程序尝试调用我的TitleTrigger()时,它引发了错误我不知道出了什么问题,所以我在解决方案代码上达到了顶峰,他们已经注释掉了构造函数,所以这就是我所做的,而且效果很好。这给我留下了三个问题...

  1. 我是否认为子类将在其子类中未定义的情况下自动继承其超类的构造函数是否正确?当我对此发表评论时,似乎正在发生这种情况。
  2. 我使用TitleTrigger()的构造函数与其父类中的构造函数完全相同WordTrigger(),因此,为什么要在子类中定义它或允许子类继承它,这又有什么关系呢?
  3. 我有两个其他子类,WordTrigger()它们与TitleTrigger()一个子类相同,只是一个子类在故事主题中寻找一个单词,而另一个子类在摘要中寻找。这两个人通过自己的构造函数通过了测试,这看起来确实很奇怪。

我可以根据需要添加测试代码,尽管如果问题只是该代码如何测试我的类的一个怪癖,我实际上并不需要知道那个怪癖是什么。对于将来的情况,我真的很想知道的是,如果子类(子类)没有定义自己的子类,子类是否会自动继承其超类构造函数,就像它们如何从超类继承其他方法一样。

帕特里克·柯林斯

我是否认为子类将在其子类中未定义的情况下自动继承其超类的构造函数是否正确?

是。Java中防止这种情况发生的问题是重载(即每个人都继承自Object,因此每个人最终都会得到一个null构造函数)。在Python中这不是问题,因此我们可以继承构造函数。

我在TitleTrigger()中使用的构造函数与它的超类WordTrigger()中的构造函数完全相同,因此,为什么要在子类中定义它还是允许子类继承它,这又为什么呢?

除非我丢失了某些内容,否则不应该(为了减少代码重复)。

这两个人通过自己的构造函数通过了测试,这看起来确实很奇怪。

是的。在看不到更多代码/错误的情况下,我无法猜测出什么问题。而且,在这里使用类似乎有些过分了-一个函数就可以了。不是Java,因此我们不需要将所有内容包装在无用的OO层中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除构造函数是继承的吗?

来自分类Dev

扩展Python中继承函数的行为

来自分类Dev

在VS2013中继承构造函数

来自分类Dev

案例类构造函数中继承的抽象类型

来自分类Dev

您可以在JavaScript中继承私有函数吗?

来自分类Dev

修改或继承构造函数的可能吗?

来自分类Dev

在Kotlin中继承函数类型

来自分类Dev

Scala中继承的类型别名在构造函数声明中不可见,但在构造函数主体中可见

来自分类Dev

Scala中继承的类型别名在构造函数声明中不可见,但在构造函数主体中可见

来自分类Dev

为通用类创建一个具体的构造函数,而无需在C#中继承

来自分类Dev

为什么我可以在子类中继承并调用私有构造函数?

来自分类Dev

为什么我可以在子类中继承并调用私有构造函数?

来自分类Dev

python中的多个构造函数,使用继承

来自分类Dev

Python和构造函数中的多重继承

来自分类Dev

构造函数在继承的类python中失败

来自分类Dev

Python继承调用构造函数问题

来自分类Dev

默认情况下继承构造函数noexcept(true)吗?

来自分类Dev

在python中继承时出错

来自分类Dev

删除构造函数继承

来自分类Dev

继承构造函数与转发

来自分类Dev

继承Java构造函数

来自分类Dev

Javascript构造函数继承

来自分类Dev

C ++构造函数继承

来自分类Dev

继承的C ++构造函数

来自分类Dev

继承副本构造函数

来自分类Dev

构造函数+继承支持

来自分类Dev

构造函数中的继承

来自分类Dev

padding属性是在CSS中继承的吗

来自分类Dev

可以在Javascript中继承模块吗?