在Python2.7和3中,我使用以下方法调用父类(superclass)的函数:classC(B):def__init__(self):B.__init__(self)我看到也可以用super(B,self).__init__()和python3super()替换B.__init__(self).__init__().这两种方式有什么优点或缺点吗?至少对我来说直接从B调用它更有意义,但也许有一个很好的理由,super()只能在使用元类时使用(我通常避免)。 最佳答案 对于单继承,super()只是引用基类型的一种更好的方式。这样,
在Python2.7和3中,我使用以下方法调用父类(superclass)的函数:classC(B):def__init__(self):B.__init__(self)我看到也可以用super(B,self).__init__()和python3super()替换B.__init__(self).__init__().这两种方式有什么优点或缺点吗?至少对我来说直接从B调用它更有意义,但也许有一个很好的理由,super()只能在使用元类时使用(我通常避免)。 最佳答案 对于单继承,super()只是引用基类型的一种更好的方式。这样,
我有一个名为extended.py的模块,其中包含以下行:from.basicimportBasicModule并且文件basic.py与__init__.py位于同一目录中。但是,当我尝试将其运行为:pythonextended.py我得到错误:ValueError:Attemptedrelativeimportinnon-package同时添加一行:from__future__importabsolute_import不能解决问题。也许我太累了,看不到明显的东西-但我看不到这里的问题。 最佳答案 相对导入仅适用于包,但是当您在e
我有一个名为extended.py的模块,其中包含以下行:from.basicimportBasicModule并且文件basic.py与__init__.py位于同一目录中。但是,当我尝试将其运行为:pythonextended.py我得到错误:ValueError:Attemptedrelativeimportinnon-package同时添加一行:from__future__importabsolute_import不能解决问题。也许我太累了,看不到明显的东西-但我看不到这里的问题。 最佳答案 相对导入仅适用于包,但是当您在e
这是一个双重问题,一个理论部分,一个实践部分:当子类化dict时:classImageDB(dict):def__init__(self,directory):dict.__init__(self)#Necessary??...是否应该调用dict.__init__(self),作为“安全”措施(例如,如果有一些重要的实现细节很重要)?如果not调用dict.__init__()是否存在代码与Python的future版本中断的风险?我在这里寻找做一件事或另一件事的根本原因(实际上,调用dict.__init__()是安全的)。我的猜测是,当调用ImageDB.__init__(sel
这是一个双重问题,一个理论部分,一个实践部分:当子类化dict时:classImageDB(dict):def__init__(self,directory):dict.__init__(self)#Necessary??...是否应该调用dict.__init__(self),作为“安全”措施(例如,如果有一些重要的实现细节很重要)?如果not调用dict.__init__()是否存在代码与Python的future版本中断的风险?我在这里寻找做一件事或另一件事的根本原因(实际上,调用dict.__init__()是安全的)。我的猜测是,当调用ImageDB.__init__(sel
运行以下代码时出现错误:classPerson:def_init_(self,name):self.name=namedefhello(self):print'Initialisingtheobjectwithitsname',self.namep=Person('Constructor')p.hello()输出是:Traceback(mostrecentcalllast):File"./class_init.py",line11,inp=Person('Harry')TypeError:thisconstructortakesnoarguments有什么问题?
运行以下代码时出现错误:classPerson:def_init_(self,name):self.name=namedefhello(self):print'Initialisingtheobjectwithitsname',self.namep=Person('Constructor')p.hello()输出是:Traceback(mostrecentcalllast):File"./class_init.py",line11,inp=Person('Harry')TypeError:thisconstructortakesnoarguments有什么问题?
Django1.6我在Django表单类中有一个工作代码块,如下所示。我从中构建表单字段列表的数据集可以包含任何字段的初始值,并且我在表单中设置该初始值没有成功。下面的iffield_value:block确实填充了初始表单字典属性,但没有显示初始值。请注意(如果您想知道).initial属性在super()调用之后才存在。这个可以吗?如果是这样,我做错了什么?谢谢!def__init__(self,*args,**kwargs):id=kwargs.pop('values_id',0)super(LaunchForm,self).__init__(*args,**kwargs)#Lo
Django1.6我在Django表单类中有一个工作代码块,如下所示。我从中构建表单字段列表的数据集可以包含任何字段的初始值,并且我在表单中设置该初始值没有成功。下面的iffield_value:block确实填充了初始表单字典属性,但没有显示初始值。请注意(如果您想知道).initial属性在super()调用之后才存在。这个可以吗?如果是这样,我做错了什么?谢谢!def__init__(self,*args,**kwargs):id=kwargs.pop('values_id',0)super(LaunchForm,self).__init__(*args,**kwargs)#Lo