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正在呕吐此错误消息:
方法应该将“self”作为第一个参数
错误的第一个参数'SessionWizardView'赋予超类
答案 0 :(得分:1)
super用于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 如何报告第一个参数的命名。 pylint 知道标准Python classmethod 将使用 cls 作为第一个参数,但它不知道任何关于 classonlymethod 具有相同的模式。
参考文献: