美文网首页Python程序员
python使用super()时遇到的问题

python使用super()时遇到的问题

作者: 大阿拉伯人 | 来源:发表于2016-06-05 18:09 被阅读112次

当我们在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()时遇到的问题

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

  • python super方法,MRO详解

    python2和python3中super的使用: python2中的super只适用与新式类,在早期的pytho...

  • ubuntu 下基于python深度学习

    一.python 的基本语法 <1>Python 类的定义、继承及使用对象 注意super()的使用,成员函...

  • python super 使用

    一个类中可以显式的调用父类的方法或初始化方法,也可以隐式的调用方法或初始化。 隐式:class A(object)...

  • pytorch 学习笔记

    1)关于super Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用...

  • python 面向对象: super()

    python 关于 super 的使用 子类对象调用父类方法 :super(B,b).hh() 子类中调用父类方法...

  • requests里的post方法遇到的问题

    这两个问题都是关于json在python中的使用时遇到的. 第一天遇到的问题: 下午遇到个问题,在添加课程时需要有...

  • 组件编写

    super关键字 使用class关键字时无法使用super.method,解决方案

  • pycharm attempted relative impor

    在使用 pycharm 编写 python 项目时,遇到了以上这个问题。 各种google, 实验了很多解决办法...

  • 怎么理解Python类中的super函数

    前言 在Python类的继承中,经常能看到super函数的存在,那super函数主要的作用,以及如何理解和使用好这...

网友评论

    本文标题:python使用super()时遇到的问题

    本文链接:https://www.haomeiwen.com/subject/kqrrdttx.html