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 继承。