我想要一个儿童班' __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"
?
答案 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__()
。