假设我有一个继承自SuperFoo的模型Foo:classSuperFoo(models.Model):name=models.CharField('nameofSuperFooinstance',max_length=50)...classFoo(SuperFoo):...#dosomethingthatchangesverbose_nameofnamefieldofSuperFoo在Foo类中,我想覆盖SuperFoo的name字段的verbose_name。我可以吗?如果不是,最好的选择是在模型表单定义中设置标签以使其显示在模板中? 最佳答案
classp1(object):passclassp2(p1):pass所以p2是p1的子类。有没有办法以编程方式找出p1是p2的父类(superclass)[之一]? 最佳答案 使用.__bases__似乎是您正在寻找的......>>>classp1(object):pass>>>classp2(p1):pass>>>p2.__bases__(,) 关于python-在Python中检查A是否是B的父类(superclass),我们在StackOverflow上找到一个类似的问题:
我读过这样的帖子:WhatisametaclassinPython?Whatareyour(concrete)use-casesformetaclassesinPython?Python'sSuperisnifty,butyoucan'tuseit但不知何故,我感到困惑。许多困惑,例如:我何时以及为什么必须执行以下操作?#Referlink1returnsuper(MyType,cls).__new__(cls,name,bases,newattrs)或#Referlink2returnsuper(MetaSingleton,cls).__call__(*args,**kw)或#Ref
在我的Python2.6(64位、win7、ActivePython)上,当我打电话时:os.path.abspath('D:/PROJECTS/SuiShouBei/www/ssb/static/voices/en/mp3/con.mp3')返回:'\\\\.\\con'到目前为止,我对其他路径没有任何问题。有人有同样的问题吗?谁能告诉我为什么? 最佳答案 我可以在Python2.6、2.7、3.1和3.2中重现这一点。这种行为的原因是CON是illegalfilename在Windows中(尝试os.path.abspath('
我有这样的代码:classA(object):def__init__(self):self.a=1classB(A):def__init__(self):self.b=2super(self.__class__,self).__init__()classC(B):def__init__(self):self.c=3super(self.__class__,self).__init__()实例化B按预期工作,但实例化C无限递归并导致堆栈溢出。我该如何解决这个问题? 最佳答案 当实例化C调用B.__init__时,self.__clas
考虑以下python代码片段classA(object):def__init__(self,a):self.a=aclassB(A):def__init__(self,a,b):super(B,self).__init__(a)self.b=bclassC(A):def__init__(self,a,c):super(C,self).__init__(a)self.c=cclassD(B,C):def__init__(self,a,b,c,d):#super(D,self).__init__(a,b,c)???self.d=d我想知道如何将a、b和c传递给相应的基类的构造函数。
我喜欢Python的美丽外观/感觉,我希望这可以更简洁(可读性很棒)。在覆盖子类init时,接受可选关键字参数的简洁方法是什么,其中可选的kwarg必须在super()之后使用称呼?我有一个django表单,我想接受一个可选的用户参数,但如果我将它定义为参数之一user=None,然后通常的形式调用form({})假设位置参数是指关键字参数user.代码胜于(我的)话:def__init__(self,*args,**kwargs):user=Noneif'user'inkwargs:user=kwargs.pop('user')super(BaseCheckoutForm,self)
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭9年前。人们常说super应该是avoided在Python2中。我在Python2中使用super时发现,除非我提供所有参数,例如示例:super(ThisClass,self).some_func(*args,**kwargs)在我看来这违背了使用super()的目的,它既不简洁,也不比TheBaseClass.some_func(self,*args,*
我正在运行Python2.5,所以这个问题可能不适用于Python3。当您使用多重继承创建菱形类层次结构并创建派生类的对象时,Python会做正确的事情(TM)。它调用派生类的构造函数,然后是从左到右列出的父类,然后是祖父类。我熟悉Python的MRO;那不是我的问题。我很好奇从super返回的对象实际上如何以正确的顺序与父类中的super调用进行通信。考虑这个示例代码:#!/usr/bin/pythonclassA(object):def__init__(self):print"Ainit"classB(A):def__init__(self):print"Binit"super(B
我到处都能看到父类(superclass)方法应该被调用的例子:super(SuperClass,instance).method(args)这样做有什么缺点吗:SuperClass.method(instance,args) 最佳答案 考虑以下情况:classA(object):def__init__(self):print('RunningA.__init__')super(A,self).__init__()classB(A):def__init__(self):print('RunningB.__init__')#super