Python继承:与super __str__连接

时间:2015-06-26 00:23:20

标签: python inheritance

我想要一个儿童班' __str__实现添加到基本实现:

class A:
    def __str__(self):
        return "this"

class B(A):
    def __str__(self):
        return super(B, self) + " + that"

然而,这会产生类型错误:

  

TypeError:+:' super'不支持的操作数类型和' str'

有没有办法让str(B())返回"this + that"

4 个答案:

答案 0 :(得分:10)

您需要super(B, self).__str__()super指的是父类;你没有打电话给任何方法。

答案 1 :(得分:3)

对于python 2,正如其他人发布的那样。

class A(object):
    def __str__(self):
        return "this"

class B(A):
    def __str__(self):
        return super(B, self).__str__() + " + that"

对于python 3,语法简化了。 super无需任何参数即可正常工作。

class A():
    def __str__(self):
        return "this"

class B(A):
    def __str__(self):
        return super().__str__() + " + that"

答案 2 :(得分:2)

B类应该是:

class B(A):
def __str__(self):
    return super(B, self).__str__() + ' + that

答案 3 :(得分:2)

这是一些有效的代码。你需要的是

1)子类对象,以便super按预期工作,并且

2)连接字符串时使用__str__()

class A(object):
  def __str__(self):
    return "this"


class B(A):

  def __str__(self):
    return super(B, self).__str__() + " + that"

print B()

注意:print B()会调用b.__str__()