首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在嵌套类中使用super()

在嵌套类中使用 super() 是为了调用父类的方法。在 Python 中,super() 函数用于调用父类(或祖先类)的方法。在嵌套类中,super() 函数可以用于调用父类或祖先类中的相应方法。

以下是一个示例:

代码语言:python
代码运行次数:0
复制
class Outer:
    def __init__(self):
        print("Outer class initialized")

    class Inner:
        def __init__(self):
            super().__init__()
            print("Inner class initialized")

inner = Outer.Inner()

在这个示例中,Outer.Inner 是一个嵌套类。在 Outer.Inner__init__ 方法中,我们使用 super().__init__() 调用了 Outer 类的 __init__ 方法。这将输出 "Outer class initialized" 和 "Inner class initialized"。

需要注意的是,super() 函数只能在继承关系中使用。在本示例中,Outer.Inner 并没有继承任何类,因此使用 super() 函数是合适的。但是,如果 Outer.Inner 继承了其他类,那么 super() 函数将调用该父类或祖先类的相应方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Java嵌套用法

    Java,可以另一个定义一个。这些称为嵌套。它们使您能够对只一个地方使用进行逻辑分组。因此,这增加了封装的使用,并创建了更具可读性和可维护性的代码。...嵌套的作用域由其封闭的作用域限定。因此,在上面的例子NestedClass并不独立于的 OuterClass外部类而存在。 嵌套可以访问嵌套的成员,包括私有成员。...嵌套分为两: 1、静态嵌套(static nested class):声明为静态的嵌套称为静态嵌套。 2、内部类(inner class):内部类是非静态嵌套。...然后,使用以下语法在外部对象创建内部对象: OuterClass.InnerClass innerObject = outerObject.new InnerClass(); There are two...也就是说,它不能直接引用其封闭的非静态成员。由于这个限制,静态嵌套很少被使用

    2.1K40

    怎么理解Pythonsuper函数

    前言 Python的继承,经常能看到super函数的存在,那super函数主要的作用,以及如何理解和使用好这个函数?本次教程将详细讲解,希望大家看到最后,并按照代码实际操作下。...Human): pass stu_1 = Student('lisi', 'male') print(stu_1.name) parent lisi 这里Student没有构造函数,所以会去父寻找构造函数...函数常常用于子类的构造函数,用于调用父(超)的构造函数,并且不会显式引用基。...__init__() #python3写法 不仅仅是用于构造函数 super函数虽常用于构造函数,但是父的其他函数一样也是可以用super函数的。...super函数和直接调用父方法的区别 单继承时,我们看到super和直接调用父方法得到的结果是一样的,只是不会显式引用基。但多重继承就不要了,我把上面的代码进行了修改,我相信你能看懂区别。

    84630

    Pythonsuper()和__init__()的关系

    2. super()只能用于新式。    ...把基改为旧式,即不继承任何基class Base(): def __init__(self): print 'Base create'#执行时,初始化b时就会报错 super...不是父,而是继承顺序的下一个多重继承时会涉及继承顺序,super()相当于返回继承顺序的下一个,而不是父,类似于这样的功能:def super(class_name, self): mro...多重继承里,如果把childA()的 super(childA, self).__init__() 换成Base....()方法可以看出,super()的第一个参数可以是继承链任意一个的名字,如果是本身就会依次继承下一个;如果是继承链里之前的便会无限递归下去;如果是继承链里之后的便会忽略继承链汇总本身和传入之间的

    72110

    pythonsuper()和__init__()的区别

    super()只能用于新式 把基改为旧式,即不继承任何基 class Base(): def __init__(self): print 'Base create' 执行时...__init__() TypeError: must be type, not classobj super不是父,而是继承顺序的下一个 多重继承时会涉及继承顺序,super()相当于返回继承顺序的下一个..._init_(), super(childA, self)返回当前的继承顺序childA后的一个childB;然后再执行childB()._init()_,这样顺序执行下去。...多重继承里,如果把childA()super(childA, self)._init_() 换成Base....()方法可以看出,super()的第一个参数可以是继承链任意一个的名字, 如果是本身就会依次继承下一个; 如果是继承链里之前的便会无限递归下去; 如果是继承链里之后的便会忽略继承链汇总本身和传入之间的

    96060

    【Kotlin】Kotlin 的继承 三 ( super 关键字使用 | super@ 外部调用父方法 | 子类选择性调用 父 接口 方法 super )

    子类重写父方法 : 如果属性 或 方法被子类重写了 , 那么就需要使用 super 关键字调用父类属性或方法 ; 4 . super 关键字调用需要考虑的情况 : ① 常用情况 : 最常用的情况只使用...super 关键字进行简单调用即可 ; ② 子类内部类调用父 : 如果想要在子类的内部调用父的成员和方法 , 需要使用 super@子类名称 调用 ; ③ 子类调用不同父的同名方法 : 如果子类继承的父...子类调用父方法 ( super ) ---- 子类调用父方法 : 子类可以通过 super 调用父的方法 , 包括普通方法 , 和属性访问的 setter 方法 ; 其中的 super 相当于父对象的引用...子类内部类调用父方法 ( super@ ) ---- 子类内部类调用父方法 : 子类的内部类 , 如果想要访问父的方法 , 可以使用 super@子类名称.父方法() 的形式 , 调用父的方法...代码示例 : 代码定义了一个父 Father , 接口 Build , 父和接口 都定义了 action 方法 , 子类 Son 继承父 , 实现 Build 接口 , 子类通过 super 调用父的成员或方法

    1.5K10

    前端测试题:的继承,关于super的说法错误的是?

    super.toString(); // 调用父的toString() } } 上面代码,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父的构造函数...,用来新建父的this对象 super这个关键字,既可以当作函数使用,也可以当作对象使用。...super作为函数调用时,代表父的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。...class A {} class B extends A { constructor() { super(); } } 子类B的构造函数之中的super(),代表调用父的构造函数。...参考代码: super是父的引用,我们可以通过super来调用父的方法和属性。 如果没有 supper() 则会报错 答案: B、 super相当于子类的引用

    3.1K30

    C++ 实现 super 关键字

    但是为什么不使用 super 呢?主要是因为 多重继承 这一 C++ 特性。如果一个 class 有多个 父,那么使用 super 的语义就不清晰了。...使用 super 的好处 --- 目前我看到所有网上的文章,都提到要调用父的同名成员函数时,可以直接使用名就可以完成问题了。那么似乎这就是最好的解决方案了。...麻烦来了,这些个派生,或多或少调用了父的实现 PrototypeClass::someFunc(),如果变成上图的关系的话,PrototypeClass 变成了这些的 祖父。... C++ 中使用 super --- 解决方法很简单,以 DerivedBrabo 为例, DerivedBrabo.h 文件这么写: #ifndef __DERIVED_BRAVO_H__ #...所以比较好的方法是将的声明与实现分开,所有的实现都放在 .cpp 文件定义。

    6.1K50

    TypeScript 始终抽象嵌套类型

    TypeScript ,我看到过多次出现这种情况,您有一个复杂的对象,该对象可能具有嵌套对象,例如下面的示例:interface ComplexObject { a: string; b: number...现在假设我们想要编写一个以该对象作为输入的函数,可能会进行一些插值,并且可能会返回该对象的子对象,例如嵌套属性,您可能会有以下代码:const printObj = (obj: ComplexObject...) => { // 做一些处理 return obj.nested;};如果您尝试使用 IntelliSense 检查该函数的输出,您将看到如下内容:const printObj: (obj: ComplexObject...处理类似上面的复杂对象的更好方法是将所有嵌套属性抽象为它们自己的接口/类型。...现在如果您再次使用 IntelliSense 检查相同的函数,您将获得更加易读的输出:const printObj: (obj: ComplexObject) => ComplexObjectNested

    14900

    Android开发怎样使用Application

    ---- Android开发怎样使用Application ---- 自己独立开发项目才发现以前对Application并不是十分了解,现在开始直接搭建一个新项目的框架才重新踩过这个坑。...Application项目开发使用 首先在项目目录下一个Java继承Application,实现是onCreate()方法。...private static AndroidApplication instance; @Override public void onCreate() { super.onCreate...控件的构造方法获取Context或者做其他视图操作 写过Android的同学应该知道自己或者看别人dome都很少或者基本看不到控件构造函数内进行初始化,获取参数等这些操作吧!...具体原因是ContextWrapper的源码,他有一个attachBaseContext()方法,这个方法会将传入的一个Context参数赋值给mBase对象,之后mBase对象就有值了。

    2.2K50

    Android开发怎样使用Application(二)

    接着上次总结的Application的实际项目使用Android开发怎样使用Application,最近我又发现了一个取巧的使用方法,给想要快速开发的同学分享下心得,也是给大家多提供一个思路吧。...List ACTIVITIES = new ArrayList(); @Override public void onCreate() { super.onCreate...统一全局的Dialog样式,你就可以在这个帮助获取App的当前Activity实例来显示Dialog. 2、工具中用static关键字引入Application实例的单例对象 这个才是今天我主要想说的...,import通过static关键字引入Application实例,工具和帮助的大量方法中就不用大量依赖Context做传入处理了。...第二种方法当然设计模式上有耦合度很高的缺点,导致这些工具都要依赖App,但是Android开发,这个你可以封装一个BaseApplication的Application的基础来,让其他的Application

    1.6K20

    Java嵌套、内部类、静态内部类

    参考链接: Java嵌套 Java我们一个的内部再定义一个,如下所示:  class OuterClass {     ...    ...InnerClass通过OuterClass.this 显式的 引用其所绑定的OuterClass的实例。...static class StaticNestedClass {         ...     } }  那么我可以像正常使用一个一般的静态那样使用一个静态嵌套,只不过要通过其外围的名字来访问静态嵌套的名字...所以,外围更像是静态嵌套的命名空间。比如要获取静态嵌套,要使用  OuterClass.StaticNestedClass。  ...如果我们像初始化内部类那样初始化静态嵌套,也就是创建静态嵌套的时候给其绑定其外围的实例对象,会怎么样呢?

    1.7K50
    领券