pythonの抽象ベースクラスabc.abstractmethod


时には、私达は抽象的に1つの基类を出して、どのような方法があることを知っていて、しかし抽象的な方法だけで、机能を実现していないで、継承することしかできなくて、実例化することができなくて、しかし子类はこの方法を実现しなければならなくて、これは抽象的な基类を使う必要があって、多くの时に使う多くて、小猿の輪はちょうど学んだので、これをみんなに分かち合います.
import abc

class Foo(abc.ABC):

    @abc.abstractmethod

    def fun(self):

        pass

a = Foo()

#      

# TypeError: Can't instantiate abstract class Foo with abstract methods fun

         

class Sub_foo(Foo):

    def f(self):

        print('This is sub foo!')

c = Sub_foo()

#        fun   ,     sub_foo    

# TypeError: Can't instantiate abstract class Sub_foo with abstract methods fun

       fun  :

class Sub_foo(Foo):

    def fun(self):

        print("From sub_foo")

    def f(self):

        print('This is sub foo!')

c = Sub_foo()

c.fun()

c.f()

  :

From sub_foo

This is sub foo!

ただし、このときFooをインスタンス化すると、抽象ベースクラスは継承され、インスタンス化できないため、サブクラスはインスタンス化されます.
まずこの方法を実現しなければならない.
抽象基類を理解するために、私たちは野菜という抽象基類を持っていて、キュウリ、トマト、セロリなどがありますが、あなたは永遠にキュウリ、トマトなどしか食べられません.いわゆる「野菜」を食べることはできません.このように理解するのは簡単でしょう.