认识了super后,初恋让我晕(((φ(◎ロ◎;)φ)))
学会super,然后看不懂没有super的了猜猜怎么变成我这样的QAQ
救命啊
不会了越看越晕 如果你看到一个很难的知识点,并且你感觉自己经过多次尝试后也无法理解,你可以尝试着先去学别的东西。等以后如果真的要用了自然会学会的,或者说是因为盯着它学太久了,却看看别的东西沉淀一下,等大脑处理好之后就反应过来了 哈哈,别担心!super确实有点难以理解,但其实并不难。我来给你解释一下。
在面向对象的编程中,我们常常会遇到继承的情况,一个类继承自另一个类。而super就是用来引用父类的方法或属性的。
首先,要明确一点,子类继承了父类的所有方法和属性,但有时候我们在子类中可能想要对父类的方法或属性进行修改或扩展。这时候super就派上用场了。
比方说,我们有一个父类叫Animal,里面有一个方法叫eat(),功能是输出"动物在吃东西"。现在我们想要创建一个子类叫Dog,那么Dog也自然可以吃东西,但它吃东西的方式可能和普通的动物有所不同。
于是我们可以在Dog类中定义一个新的eat()方法,然后使用super来调用父类的eat()方法,以保留父类的原始功能。具体代码如下:
class Animal:
def eat(self):
print("动物在吃东西")
class Dog(Animal):
def eat(self):
super().eat()
print("狗在骨头上啃")
dog = Dog()
dog.eat()
当我们运行dog.eat()时,会先输出"动物在吃东西",然后再输出"狗在骨头上啃"。
通过使用super,我们可以在子类中重写(overwrite)父类的方法,同时又能保留父类方法的功能。这样就实现了灵活的扩展。
希望我解释得清楚一点了,如果还有疑问,欢迎继续提问哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 zhangchenyvn 于 2024-7-9 11:34 编辑
调用E.say ↓
E.say 调用 D.say ↓
D.say 调用 B.say↓
B.say print(‘FishB’) ↓
D.say print(‘FishD’) ↓
E.say 调用 C.say ↓
C.say调用A.say ↓
A.say print(‘Fish’) ↓
C.say print(‘FishC’) ↓
E.say print(‘FishE’) ↓ super确实不好理解,要多费功夫 zhangchenyvn 发表于 2024-6-10 13:21
调用E.say ↓
E.say 调用 D.say ↓
正确答案出现了,可以稍微加点注释会更好 zhangchenyvn 发表于 2024-6-10 13:21
调用E.say ↓
E.say 调用 D.say ↓
难懂……… 不二如是 发表于 2024-6-10 17:05
super确实不好理解,要多费功夫
OK 这篇文章,我觉得你可以认真琢磨一下 -> https://fishc.com.cn/thread-213994-1-1.html 正如你的名字一样,小白别急躁,慢慢来,好好复习之前的知识,早晚会懂的。 我觉得编程的目的是完成设定的目标,而不是学会特定语句,像解压缩(*符号)、super()、类都是我后来慢慢学会的。
如果你不是特别急的话,建议利用所学知识写项目,遇到要用 super() 的时候再慢慢理解,或者看别人有 super() 的程序。
实在弄不懂也问题不大,super() 可以被完全替代。
那我们可以认识一下{:5_92:},不会让你头晕
哈哈,开个玩笑,加油~!
页:
[1]