2011-11-22 69 views
0
class SessionWizardView(WizardView): 
    @classonlymethod 
    def as_view(cls, *args, **kwargs): 
     #...snipped.. 
     pass 

class ParentWizard(SessionWizardView): 
    @classonlymethod 
    def as_view(cls, *args, **kwargs): 
     return super(SessionWizardView, cls).as_view(...) 

class ChildWizard(ParentWizard): 
    @classonlymethod 
    def as_view(cls, *args, **kwargs): 
     return super(SessionWizardView, cls).as_view(...) 

ChildWizard,是否合法将祖父类(SessionWizardView)传入super的第一个参数? pylint的呕吐此错误消息:在python中这是超级的正确用法吗?

方法应该有“自我”作为第一个参数

坏第一个参数“SessionWizardView”给超类

回答

1

超对classmethods通常的用法把CLS第一和当前类作为第二个参数的名称:

class SessionWizardView(WizardView): 
    @classonlymethod 
    def as_view(cls, *args, **kwargs): 
     #...snipped.. 
     pass 

class ParentWizard(SessionWizardView): 
    @classonlymethod 
    def as_view(cls, *args, **kwargs): 
     return super(cls, ParentWizard).as_view(...) 

class ChildWizard(ParentWizard): 
    @classonlymethod 
    def as_view(cls, *args, **kwargs): 
     return super(cls, ChildWizard).as_view(...) 

如果您构建通过测试的工作代码,我不会太担心如何报告第一个参数的命名。 pylint的知道,一个标准的Python 类方法将使用CLS作为第一个参数,但它不知道任何关于classonlymethod具有相同的图案。

参考文献:

相关问题