从最新版本开始,如果该变量是Field实例,Django不允许子类具有与其超类中的变量同名的变量。
我需要一个子类来修改这个变量,我称之为“部门”。调用我的类super和sub,我需要sub来修改它从super继承的部门变量。如果我重新声明它,Django会抛出一个字段错误。当然,如果我不这样做,部门不在重新分配的范围内。如果super没有部门,我会收到数据库错误。当我尝试重写 init :
时,我会遇到奇怪的行为def __init__(self):
super(theSuperClass, self).__init__()
TypeError:super(type,obj):obj必须是
类型的实例或子类型任何人都知道如何做到这一点?
答案 0 :(得分:2)
super
的第一个参数必须是当前类(即子类),而不是超类。
此外,您应该传递传递给__init__
的参数。所以它应该是:
class MySubClass(MySuperClass):
def __init__(self, *args, **kwargs):
super(MySubClass, self).__init__(*args, **kwargs)