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

调用super时参数数量错误

当在Python中调用super()函数时,可能会遇到参数数量错误。这通常是因为在调用super()时,没有提供正确的参数。在Python中,super()函数用于调用父类的方法,并且需要提供两个参数:当前类的实例(通常是self)和父类的类名(通常是super)。

例如,假设我们有一个名为Child的子类,它继承自名为Parent的父类。在Child类中,我们想要调用Parent类的__init__方法,可以这样做:

代码语言:python
代码运行次数:0
复制
class Parent:
    def __init__(self, name):
        self.name = name

class Child(Parent):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age

在这个例子中,我们使用super().__init__(name)来调用Parent类的__init__方法。这里,super()函数的第一个参数是self,它是Child类的实例;第二个参数是Parent,它是父类的类名。

如果在调用super()时参数数量错误,可以检查是否正确提供了当前类的实例和父类的类名。如果仍然存在问题,请检查父类的方法是否存在,并且是否正确定义了参数。

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

相关·内容

Postgresql源码(78)plpgsql中调用call proc()参数传递和赋值(pl参数

《Postgresql源码(77)plpgsql中参数传递和赋值(pl参数)》 《Postgresql源码(78)plpgsql中调用call proc()参数传递和赋值(pl参数)》 总结...调用者在exec_stmt_call中拼接ParamListInfo传给SPI去执行call xxxx命令。...ParamListInfo记录了PL的一些回调函数,在SPI会走到:ExecuteCallStmt ExecuteCallStmt核心流程两步: 拼参数列表:会拿到所有入参 假设第一个入参是Param...args[0] 假设第二个入参是Const类型常量,则会直接在执行器内赋值给fcinfo->args[1] 走FunctionCallInvoke进入plpgsql_exec_functions开始执行被调用函数...int; begin a1 := 10; call p1(a1, 20, a3); raise notice 'a3: %', a3; end; $$; 进入exec_stmt_call

1.1K10

错误记录】Android Studio 编译 Kotlin 代码编译报错 ( 升级支持库处理 @NonNull 参数 )

{ super.getItemOffsets(outRect, view, parent, state) } 注意重写的方法中 , 参数类型 outRect...都是可空类型 ; 查看 ItemDecoration 真实代码 , 其中的 getItemOffsets 方法的四个参数都是非空类型 , 添加了 @NonNull 注解 , 因此这里必须传入非空参数 ,...继承继承为可空参数 , 肯定报错 , 参数类型不一致 ; public void getItemOffsets(@NonNull Rect outRect, @NonNull View...RecyclerView.LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent); } } 三、解决方案 Google 在之前的支持库方法的参数中..., 没有添加 @NonNull 注解 , 在 28.0.0 版本中 , 添加了该注解 , 导致了继承不兼容的情况 ; 修改方法是将所有的参数类型都设置为非空类型 , 删除每个参数中的问号即可 ;

2.2K20
  • 错误记录】Android 编译技术报错 ( 注解处理器 process 方法多次调用问题 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 注解处理器 AbstractProcessor 中的 process 方法可能会调用多次 , 在生成代码 , 一定要注意 , 检测到 注解节点 后再生成代码...; 一、报错信息 ---- Android 编译技术 , 使用注解处理器生成代码 , 编译时报如下错误 : ( 该错误不会中断编译 ) javax.annotation.processing.FilerException...@Override public synchronized void init(ProcessingEnvironment processingEnvironment) { super.init...3 次 , 调用第一次生成了 com.example.helloworld.HelloWorld 源码 , 但是后面又调用了 2 次 , 后面调用的 2 次直接报上述 " javax.annotation.processing.FilerException...e.printStackTrace(); } } return false; } } 修改后 , 编译不再报上述错误

    79920

    关于Java构造函数(Constructor)的常见问题总结1 为什么调用子类的构造方法的时候,默认会调用父类的构造方法2 常见错误:Implicit super constructor is und

    这就是为什么我们上面的那个例子程序会先调用super的构造方法。 但要切记,** 虽然调用了父类的构造方法,但只创建了一个对象也就是子对象。...编译器自动插入super构造方法后,子类的构造函数就会像下面这样: public Sub(){ super(); System.out.println("Sub"); } 2 常见错误:...Must define an explicit constructor 这个错误是很多开发者经常遇到的错误错误原因就是找不到超类中的默认构造函数。...编译器错误是因为默认的super()无参的构造函数是没有定义的。在Java中,如果一个类没有定义构造函数,编译器会自动插入一个默认的无参的构造函数。...我们知道如果在一个类中没有声明一个构造函数,那么编译器会隐式的帮我们实现一个无参的构造函数,但如果我们一旦一个构造函数,不管带不带参数,那么编译器都不会提供默认的构造函数,所以这么做的原因是为什么呢?

    2.9K41

    S7-1500调用一个功能块,应该使用整个结构代替大量的单个元素来传递参数

    数据块本身以这种方式被写入数值:结构体的值作为实际参数传递,计算结果被传送回结构中。也可以传送 DB 块号和块中的绝对地址。这里必须注意参数数量通常是非常大的。...在传送数据块的变量,符号名不再可用。 在 STEP 7 TIA 博途中的步骤 在 STEP 7 (TIA 博途) 中也可以传送结构体参数。...对于块调用可以参数化整个数据记录(DB 或者 DB 中的变量)作为一个参数。 可以在数据记录中直接读取结果。...优势 通过减少了大量的参数从而简化了调用接口 由于数据处理直接在数据记录中进行而节省了存储空间 没有额外的大量拷贝,提高系统性能 同时优化了数据块的访问 图 01 显示了如何使用两个 DB 块的变量调用参数化功能块...注意 如果您用PLC数据类型定义了输出字节QB0, 如例子中所示,但没有在设备组态中定义输出字节QB1或者说QB1不存在的话,那么就会有上面的错误提示信息。

    1.2K10

    深入理解ES6之—对象

    Object.is()接受两个参数,并且会在二者的值相等返回true,此时要求二者的数据类型相同并且值也相等。...Object.assign()接受任意数量的供应者,而接受者会按照供应者在参数的顺序来依次接收他们的属性。...在es6中无论严格模式还是非严格模式都不会抛出错误。当存在重复属性,排在后面的属性的值会成为该属性的实际值。...(friend, person); console.log(friend.getGreeting());//hello,hi 可以使用super引用来调用对象原型上的任何方法,只要这个引用是位于简写的方法之内...试图在简写方法之外的情况使用super会导致语法错误。 使用多级继承super引用就是非常强大的,因为这种情况下Object.getPrototypeOf()不在适用于所有场景。

    39720

    《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器 (上)

    为了达到预期的效果,SongBird的构造方法必须调用其超类Bird的构造方法来确保进行基本的初始化。有两种方法能达到这个目的:调用超类构造方法的未绑定版本,或者使用super函数。...但如果直接调用类的方法(比如Bird.__init__),那么就没有实例会被绑定。这样就可以自由地提供需要的self参数。...这样的方法称为未绑定(unbound)方法 使用super函数 当前的类和对象可以作为super函数的参数使用,调用函数返回的对象的任何方法都是调用超类的方法,而不是当前类的方法。...__len__(self):这个方法应该返回集合中所含项目的数量。对于序列来说,这就是元素的个数。对于映射来说,则是键-值对的数量。...__delitem__(self,key):这个方法在对一部分对象使用del语句调用,同时必须删除和元素相关的键。

    52330

    【易错概念】Solidity语法的重载,继承的定义

    调用另一个合约实例的函数,会执行一个 EVM 函数调用,这个操作会切换执行时的上下文,这样,前一个合约的状态变量就不能访问了。...// 如果重载函数有不同类型的输出参数,会导致错误。 // 本地和基于消息的函数调用都会考虑这些重载。...mortal.kill(); } } } // 如果构造函数接受参数, // 则需要在声明(合约的构造函数)提供, // 或在派生合约的构造函数位置以修饰器调用风格提供(见下文...在类中使用 super 调用的实际函数在当前类的上下文中是未知的,尽管它的类型是已知的。 这与普通的虚拟方法查找类似。 4.1 基类构造函数的参数 派生合约需要提供基类构造函数需要的所有参数。...4.3 继承有相同名字的不同类型成员 当继承导致一个合约具有相同名字的函数和 修饰器modifier ,这会被认为是一个错误

    1.6K30

    如何扩展和优化线程池?

    0秒(当线程池梳理超过核心数量,多余的空闲时间的存活时间,即超过核心线程数量的空闲线程,在多长时间内,会被销毁), * 等待队列长度1024, * 线程名称[MXR-Task-%d],方便回溯...,我们一起来好好看看: corePoolSize 线程池中核心线程数量 maximumPoolSize 最大线程数量 keepAliveTime 空闲时间(当线程池梳理超过核心数量,多余的空闲时间的存活时间...前面几个参数我们就不讲了,很简单,主要是后面几个参数,队列,线程工厂,拒绝策略。...实际上,如果你使用 execute 方法则会打印错误信息,当你使用 submit 方法却没有调用它的get 方法,异常将会被吞没,因为,如果发生了异常,异常是作为返回值返回的。 怎么办呢?...从结果中,我们清楚的看到了错误信息的原因:by zero!并且堆栈信息明确,方便排错。优化了默认线程池的策略。

    76500

    Java中子类和父类的构造函数?

    main(String[] args){         Sub s = new Sub();     } } //输出 Super Sub 当继承父类,构造对象,父类中的构造函数(super()...如果没有,编译器会插入调用父类构造的语句。这就是为什么在创建子类对象父类中的构造超函数会被调用。  这里没有创建两个对象,只有一个子对象。...)一个常见的​​错误消息: Implicit super constructor is undefined for default constructor 这是很多Java开发人员常见的编译错误消息:...由于编译器试图插入super()这条语句到子类的两个构造函数中,但Super的默认构造函数没有被定义,所以编译器会报该错误消息。 ...3)子类中的显式调用父类构造函数  下面的代码是正常的:    子类(Sub)构造函数显式地调用父类(Super)中的带参构造参数。如果父类中定义了相对应的构造函数,那将会被正常良好的调用

    2.2K20

    如何扩展和优化线程池?

    如何手动创建线程池 下面是一个手动创建线程池的范本: /** * 默认5条线程(默认数量,即最少数量), * 最大20线程(指定了线程池中的最大线程数量), * 空闲时间0秒(当线程池梳理超过核心数量...,我们一起来好好看看: corePoolSize 线程池中核心线程数量 maximumPoolSize 最大线程数量 keepAliveTime 空闲时间(当线程池梳理超过核心数量,多余的空闲时间的存活时间...前面几个参数我们就不讲了,很简单,主要是后面几个参数,队列,线程工厂,拒绝策略。...实际上,如果你使用 execute 方法则会打印错误信息,当你使用 submit 方法却没有调用它的get 方法,异常将会被吞没,因为,如果发生了异常,异常是作为返回值返回的。 怎么办呢?...从结果中,我们清楚的看到了错误信息的原因:by zero!并且堆栈信息明确,方便排错。优化了默认线程池的策略。 5.

    1.2K20

    是程序员就不得不懂线程池的使用及扩展和优化!!!

    如何手动创建线程池 下面是一个手动创建线程池的范本: /** * 默认5条线程(默认数量,即最少数量), * 最大20线程(指定了线程池中的最大线程数量), * 空闲时间0秒(当线程池梳理超过核心数量...: corePoolSize 线程池中核心线程数量 maximumPoolSize 最大线程数量 keepAliveTime 空闲时间(当线程池梳理超过核心数量,多余的空闲时间的存活时间,即超过核心线程数量的空闲线程...,很简单,主要是后面几个参数,队列,线程工厂,拒绝策略。...实际上,如果你使用 execute 方法则会打印错误信息,当你使用 submit 方法却没有调用它的get 方法,异常将会被吞没,因为,如果发生了异常,异常是作为返回值返回的。 怎么办呢?...从结果中,我们清楚的看到了错误信息的原因:by zero!并且堆栈信息明确,方便排错。优化了默认线程池的策略。 5.

    52620

    iOS NSInvocation应用与理解 原

    但是perform相关的这些函数,有一个局限性,其参数数量不能超过2个,否则要做很麻烦的处理,与之相对,NSInvocation也是一种消息调用的方法,并且它的参数没有限制。...SEL myMethod = @selector(myLog);     //创建一个函数签名,这个签名可以是任意的,但需要注意,签名函数的参数数量要和调用的一致。     ...    [invocatin invoke];      } -(void)myLog{     NSLog(@"MyLog"); } 注意:签名函数的参数数量要和调用函数的一致。...测试后发现,当签名函数参数数量大于被调函数,也是没有问题的。...调用参数的方法,我们可以这样写: - (void)viewDidLoad {     [super viewDidLoad];     SEL myMethod = @selector(myLog:parm

    1.3K50
    领券