`staticmethod` と `abc.abstractmethod`: 融合しますか? 質問する

`staticmethod` と `abc.abstractmethod`: 融合しますか? 質問する

staticmethod私のPythonアプリでは、との両方であるメソッドを作りたいですabc.abstractmethod. どうすればいいですか?

両方のデコレータを適用してみましたが、機能しません。次のようにすると:

import abc

class C(object):
    __metaclass__ = abc.ABCMeta

    @abc.abstractmethod
    @staticmethod    
    def my_function(): pass

例外*が発生し、次のようにします。

class C(object):
    __metaclass__ = abc.ABCMeta

    @staticmethod    
    @abc.abstractmethod
    def my_function(): pass

抽象メソッドは強制されません。

抽象静的メソッドを作成するにはどうすればよいですか?

*例外:

File "c:\Python26\Lib\abc.py", line 29, in abstractmethod
 funcobj.__isabstractmethod__ = True
AttributeError: 'staticmethod' object has no attribute '__isabstractmethod__'

ベストアンサー1

で始まりますPython 3.3それは組み合わせ可能 @staticmethodそして@abstractmethod、他の提案はどれももう必要ありません:

@staticmethod
@abstractmethod
def my_abstract_staticmethod(...):

Further@abstractstaticは非推奨です。バージョン 3.3

おすすめ記事