蟒蛇错误" <method> missing 1 required positional argument: 'self' "



Python 新手。 尝试创建一个简单的示例,演示 2 个级别的抽象。 收到错误类型错误:"HPNotebook"对象不可调用">

我看了大量的例子,但仍然感到困惑。

为了理解,我在代码中展示了 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 defined
class 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 instance
hp1.scroll()                 #the 1 level deep inherited function called by this instance

只需在HPNotebook.__init__上将self()替换为super(),并在HPNotebook.scroll上将HP.scroll()替换为super().scroll()即可。

class HPNotebook(HP):
def __init__(self):
super()
def click(self):
print("HP Click")    
def scroll(self):
super().scroll()

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

相关内容

最新更新