问题描述
我正在尝试使用 @abstractmethod
装饰器和子类来实现一个类。在我看到的例子中,abstractmethod 中总是只有单词 pass
来表示抽象类。然而,我想要做的是拥有一个实际上具有功能的抽象方法,但是在子类中分配了几个自由变量:
from abc import ABC,abstractmethod
class Animal(ABC):
def __init__(self,name=''):
self.name = name
@abstractmethod
def do_something(self,sound,move):
print('open mouth and ' + sound)
print('advance by ' + move)
class Dog(Animal):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
def do_something(self,**kwargs):
return self.do_something(self,sound='bark',move='moving legs')
如果我应用这个,我会得到:
MyDog = Dog('Charly')
MyDog.name
'查理'
到目前为止,一切都很好。
MyDog.do_something()
进程完成,退出代码 -1073741571 (0xC00000FD)
当然,我对抽象类的理解有问题(第一次这样做)。 有人可以向我解释发生了什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)