呓语Beta 2.0 首页 镜头后 灶台前 捐赠者名单 有趣的小站

[python]Abstract Class & Abstract Method

文档信息

Abstract Class

使用方法

from abc import ABC
from abc import abstractmethod

class MyAbstractClassWithoutAbstractMethod(ABC):
    def __init__(self):
        print('ABC without abstract method __init__ called')

class MyAbstractClass(ABC):
    def __init__(self):
        print('ABC  __init__ called')

    @abstractmethod
    def my_abstract_method(self):
        print('abstractmethod called')

class MyClassNotImplementedAbstractMethod(MyAbstractClass):
    def __init__(self):
        print('MyClass __init__ called')

class MyClass(MyAbstractClass):
    def my_abstract_method(self):
        print('Impletemented abstract method called')

if __name__ == '__main__':
    # 没有abstract method的ABC是可以创建instance的
    abc_without_abstract_method_ins = MyAbstractClassWithoutAbstractMethod()
    print('================================================')

    try:
        abc_ins = MyAbstractClass()
    except:
        print('有abstract method的ABC不能创建instance')
    print('================================================')

    try:
        ins_without_abstract_method = MyClassNotImplementedAbstractMethod()
    except:
        print('没有实现所有abstract method的类不能创建instance')
    print('================================================')

    # 实现所有abstract method的类可以创建instance并调用其中的method
    ins = MyClass()
    ins.my_abstract_method()

参考文献

捐赠支持

可以使用支付宝转帐给richard.ma.19850509#gmail.com(请将#替换为@),谢谢!

Fork me on GitHub