私は抽象基本クラスに関するPythonドキュメントを読みました:
ここから:
abc.abstractmethod(function)
抽象メソッドを示すデコレータ。このデコレータを使用するには、クラスのメタクラスがそれである
ABCMeta
か、それから派生している必要があります。から派生したメタクラスを持つクラスは、ABCMeta
その抽象メソッドとプロパティがすべてオーバーライドされない限り、インスタンス化できません。
そしてここに
@abstractmethod
実装する必要のあるdraw()などのメソッドにデコレータを適用できます。Pythonは、メソッドを定義しないクラスに対して例外を発生させます。例外が発生するのは、メソッドがないサブクラスのインスタンスを実際に作成しようとした場合のみであることに注意してください。
私はそれをテストするためにこのコードを使用しました:
import abc
class AbstractClass(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def abstractMethod(self):
return
class ConcreteClass(AbstractClass):
def __init__(self):
self.me = "me"
c = ConcreteClass()
c.abstractMethod()
コードはうまくいくので、わかりません。入力すると、次のc.abstractMethod
ようになります。
<bound method ConcreteClass.abstractMethod of <__main__.ConcreteClass object at 0x7f694da1c3d0>>
私がここで欠けているものは何ですか?ConcreteClass
抽象メソッドを実装する必要がありますが、例外はありません。