python使用super()出现错误解决办法

python使用super()出现错误解决办法

当我们在python的子类中调用父类的方法时,会用到super(),不过我遇到了一个问题,顺便记录一下。

比如,我写了如下错误代码:

class A():
  def dosomething(self):
    print "It's A"

class B(A):
  def dosomething(self):
    super(B, self).dosomething()

if __name__ == '__main__':
  b = B()
  b.dosomething()

输出报错:

TypeError: must be type, not classobj

google之后发现,python在2.2前后有新式类(new-style class)与旧式类(old-style class)的区别,我上面的例子为旧式类,而super关键字必须作用于新式类。

新式类:所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。

所以,解决此错误必须将A类改为class A(object):

以上就是python super()使用遇到问题的解决办法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • python类中super()和__init__()的区别

    单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class childB(Base): def __init__(self): print 'creat B ', super(childB, self).__

  • Python3里的super()和__class__使用介绍

    子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好.其实呢,还有更好的理由不去直接引用父类的名字,参见 Python's super() considered super! | Deep Thoughts by Raymond Hettinger. 这时候就该 super() 登场啦-- 复制代码 代码如下: class A:   def m(self):     print('A') class B(A):   def m(self)

  • Python中的super()方法使用简介

    子类里访问父类的同名属性,而又不想直接引用父类的名字,因为说不定什么时候会去修改它,所以数据还是只保留一份的好.其实呢,还有更好的理由不去直接引用父类的名字, 这时候就该super()登场啦-- class A: def m(self): print('A') class B(A): def m(self): print('B') super().m() B().m() 当然 Python 2 里super() 是一定要参数的,所以得这么写: class B(A): def m(self): p

  • Python中super()函数简介及用法分享

    首先看一下super()函数的定义: super([type [,object-or-type]]) Return a **proxy object** that delegates method calls to a **parent or sibling** class of type. 返回一个代理对象, 这个对象负责将方法调用分配给第一个参数的一个父类或者同辈的类去完成. parent or sibling class 如何确定? 第一个参数的__mro__属性决定了搜索的顺序, sup

  • python使用super()出现错误解决办法

    python使用super()出现错误解决办法 当我们在python的子类中调用父类的方法时,会用到super(),不过我遇到了一个问题,顺便记录一下. 比如,我写了如下错误代码: class A(): def dosomething(self): print "It's A" class B(A): def dosomething(self): super(B, self).dosomething() if __name__ == '__main__': b = B() b.doso

  • python出现"IndentationError: unexpected indent"错误解决办法

    python出现"IndentationError: unexpected indent"错误解决办法 Python是一种对缩进非常敏感的语言,最常见的情况是tab和空格的混用会导致错误,或者缩进不对 如下图中的代码: 以上代码中第一次运行可以正常运行 但是第二次运行时就报错了, 原因就是第二次再e之前加了一个空格" " 解决办法只要将e之前的空格删除即可 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法

    python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法 前言: 在Python中,这两个是python中的可变参数,*arg表示任意多个无名参数,类型为tuple,**kwargs表示关键字参数,为dict,使用时需将*arg放在**kwargs之前,否则会有"SyntaxError: non-keyword arg after keyword arg"的语法错误 def test(*arg,**kwargs): pr

  • python出现"IndentationError: unexpected indent"错误解决办法

    python出现"IndentationError: unexpected indent"错误解决办法 Python是一种对缩进非常敏感的语言,最常见的情况是tab和空格的混用会导致错误,或者缩进不对 如下图中的代码: 以上代码中第一次运行可以正常运行 但是第二次运行时就报错了, 原因就是第二次再e之前加了一个空格" " 解决办法只要将e之前的空格删除即可 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法

    Linux 出现telnet: connect to address 127.0.0.1: Connection refused错误解决办法 没有xinetd服务: 1./etc/init.d目录中放置了系统中各个daemon服务的脚本,xinetd是其中之一. 2.xinetd是一种特殊的daemon服务(super daemon),它本身管理了一系列的daemon服务,这些服务只有在用户调用时才由xinetd启动,它们启动速度稍慢于独立的daemon服务,这些服务在/etc/xinetd.c

  • Java 使用JdbcTemplate 中的queryForList发生错误解决办法

    Java 使用JdbcTemplate 中的queryForList发生错误解决办法          在开发项目中遇到JdbcTemplate 中的queryForList发生错误,很是头疼,在网上找了相关资料,可以帮忙解决,这里记录下, 一.问题描述:  查询时使用JdbcTemplate 中的queryForList发生错误,如下: 查询方法如下: jdbcTemplate.queryForList(selectSql.toString(), entityClass) 查询sql如下: s

  • Python信息抽取之乱码解决办法

    Python信息抽取之乱码解决办法 就事论事,直说自己遇到的情况,和我不一样的路过吧,一样的就看看吧 信息抓取,用python,beautifulSoup,lxml,re,urllib2,urllib2去获取想要抽取的页面内容,然后使用lxml或者beautifulSoup进行解析,插入mysql 具体的内容,好了貌似很简单很easy的样子,可是里面的恶心之处就来了,第一,国内开发网站的人在指定网站编码或者是保存网站源码的时候并没有考虑什么编码,反正一句话,一个网站即使你用工具查看或者查看源码头

  • Android 中读取SD卡文件时抛出NullPointerException错误解决办法

    Android 中读取SD卡文件时抛出NullPointerException错误解决办法 相关源码: package com.example.musicplayer; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import

  • 运行独立 pyspark 时出现 Windows 错误解决办法

    我正在尝试在 Anaconda 中导入 pyspark 并运行示例代码.但是,每当我尝试在 Anaconda 中运行代码时,都会收到以下错误消息. 尝试连接到 Java 服务器时发生 ERROR:py4j.java_gateway:An 错误(127.0.0.1:53294)追溯(最近一次调用最近):文件" C:\ spark\python\lib\py4j-0.10.3-src.zip\py4j\java_gateway.py",行 send_command self.socket.

  • oracle数据库ORA-01196错误解决办法分享

    上一篇文章中我们了解到oracle常见故障类别及规划解析,接下来,我们看看oracle数据库ORA-01196错误解决的相关内容,具体如下: 问题现象 在使用shutdown abort停DataGuard备库后,备库不能open,报ORA-01196错误. 发现一备库不能应用日志,查看备库日志没发现报错,怀疑是备库应用日志服务停止,于是尝试重启备库: 可能因为备库是读业务比较繁忙,在shutdown immediate关闭备库时等时间过长,于是使用了shutdown abort命令: 但后面在

随机推荐