2011-11-22 70 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具有相同的圖案。

參考文獻:

相關問題