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
在得知我可以在我的Mac上同时使用python和python3之前,我曾尝试使用virtualenv在python版本之间切换。我能够修复我的python2.7版本,所以它仍然可以正常工作,但是现在当我运行python3时,我收到了这个错误:FailedtoimportthesitemoduleTraceback(mostrecentcalllast):File"/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py",line544,inmain()F
我只想知道__package__到底是什么意思?在官方文档中没有找到任何解释,即使在SO上也是如此。如果你能提供一些例子,我会很高兴。 最佳答案 见PEP366和importsystemreferencedocumentation:Themajorproposedchangeistheintroductionofanewmodulelevelattribute,__package__.Whenitispresent,relativeimportswillbebasedonthisattributeratherthanthemodul
考虑以下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,*
我正在尝试在mac10.8.4上安装xlrd,以便能够通过python读取excel文件。我已按照http://www.simplistix.co.uk/presentations/python-excel.pdf上的说明进行操作我这样做了:解压文件夹到桌面在终端中,cd到解压后的文件夹$pythonsetup.pyinstall这是我得到的:runninginstallrunningbuildrunningbuild_pycreatingbuildcreatingbuild/libcreatingbuild/lib/xlrdcopyingxlrd/__init__.py->build