Python 抽象方法 (Abstract Method)
參考:
Python 函數
Instance Object 追加 Method: abstract method 不可以以追加的方式實作
Abstract Method
- 需使用 abc 套件
- ABCMeta Class
- @abstractmethod annotation
- 子類別若未實作 Abstract Method 回拋出:
- TypeError: Can't instantiate abstract class ClassName with abstract method MethodName
- metaclass : Python interpreter 用來管理建構 type 時使用
from abc import ABCMeta
from abc import abstractmethod
# 注意: metaclass
class Html_Form(metaclass=ABCMeta):
def __init__(self):
pass
@abstractmethod
def submit(self, forward_to, **kwargs):
print('Submit Abstract Html_Form')
class LoginForm(Html_Form):
def submit(self, forward_to, **kwargs):
print('Submit LoginForm')
print(kwargs)
f = LoginForm()
f.submit(forward_to='roadmap', username='username', pwd='password')