跳至主要内容

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')