【问题标题】:Making a subclass in Python which overrides superclass method在 Python 中创建一个覆盖超类方法的子类
【发布时间】:2011-03-22 05:46:51
【问题描述】:

所以我正在尝试创建一个名为 Dean 的类,并且该类必须能够调用 say 的超类(只是打印出一个文本)。有人告诉我使用 Professor.say(self, stuff) 来调用 say 的超类,但我真的不明白。

我的代码如下:

Class Dean(Professor):

    Professor.say(self, stuff)

    self.say(stuff + "- We need money now, send") 

如果之前不清楚,关键是要让 Dean 对超类 say 的任何实例都这么说,这意味着即使子类中还有其他 say 实例(比如我的 Lecturer 或 Professor其他 Python 问题)它仍然会说“-我们现在需要钱,请发送”。感谢您的回答,但关于我感到困惑的地方的提示也一样好。

【问题讨论】:

    标签: python class subclass


    【解决方案1】:

    让我试着用正确的术语重新表述你所说的话。你希望Professor 的这个子类,称为Dean,有一个覆盖其超类中的方法的方法;该方法的名称是sayDean 的方法应该调用超类版本的方法。

    答案是:您定义被覆盖的方法的方式与在超类中定义方法的方式相同,使用相同的名称和参数。在该方法中,您可以使用被告知使用 Professor.say(self, stuff) 的代码在您的子类执行任何需要执行的操作之前调用超类的方法版本。

    【讨论】:

    • 改写得很好。类、方法、超类……一开始都是非常抽象的术语。我知道遇到了麻烦。
    • 感谢阅读它的人并不清楚,我会在未来尝试使它变得更加清晰。
    • @asdfaea:读了几遍才知道你在问什么,是的,但没关系,因为你刚开始学习这些东西。很高兴我能帮上忙。不过,请在您的问题上加上“家庭作业”标签,如果是这样的话——我相信这会让人们更愿意忽略/帮助解决基本的困惑。
    • @Josh Caswell 所以我想出了这门课 Dean (Professor): def say(self,stuff): Professor.say(self, stuff) return self.say (stuff + "Give us money现在哟!!!”)如果你需要我不能在这个东西中输入我会把它放在问题中......但由于某种原因它永远运行......每当我运行程序时......
    • 在一个对象的方法内部,这个对象被称为self。因此,您编写的代码调用了一个名为say 的对象方法,位于该对象的名为say 的方法中。想一想。
    猜你喜欢
    • 2013-07-07
    • 2012-12-04
    • 1970-01-01
    • 2011-11-14
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多