为了账号安全,请及时绑定邮箱和手机立即绑定

Python 错误“<method> 缺少 1 个必需的位置参数:‘self’”

Python 错误“<method> 缺少 1 个必需的位置参数:‘self’”

阿波罗的战车 2022-07-12 09:51:12
Python 新手。尝试创建一个简单的示例来演示 2 个级别的抽象。收到错误 TypeError: 'HPNotebook' object is not callable "我已经浏览了大量的例子,但仍然很难过。为了理解我已经在代码中显示了 3 个级别。您能否指出一些有助于解释此问题以及如何消除它或提供有关如何纠正此问题的建议的地方。谢谢from abc import abstractmethod,ABC   #this is to allow abstraction. the ABC forces inherited classes to implement the abstracted methods.class TouchScreenLaptop(ABC):    def __init__(self):        pass    @abstractmethod      #indicates the following method is an abstract method.    def scroll(self):    # a function within the parent        pass             #specifically indicates this is not being defined    @abstractmethod      #indicates the following method is an abstract method.    def click(self):            pass             #specifically indicates this is not being definedclass HP(TouchScreenLaptop):    def __init__(self):        pass    @abstractmethod         #indicates the following method is an abstract method.    def click(self):            pass      def scroll(self):        print("HP Scroll")class HPNotebook(HP):    def __init__(self):        self()    def click(self):        print("HP Click")        def scroll(self):        HP.scroll()hp1=HPNotebook()hp1.click()                  #the 2 level deep inherited function called by this instancehp1.scroll()                 #the 1 level deep inherited function called by this instance
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

只需替换self()为super()onHPNotebook.__init__并替换HP.scroll()为super().scroll()on HPNotebook.scroll。


class HPNotebook(HP):

    def __init__(self):

        super()

    def click(self):

        print("HP Click")    

    def scroll(self):

        super().scroll()

此外,请查看此链接以更好地了解 python 继承。


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信