1. ホーム
  2. python

[解決済み] staticmethod` と `abc.abstractmethod` 。融合するのか?

2022-05-27 01:41:56

質問

Pythonのアプリで、メソッドに staticmethod 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__'

どのように解決するのですか?

class abstractstatic(staticmethod):
    __slots__ = ()
    def __init__(self, function):
        super(abstractstatic, self).__init__(function)
        function.__isabstractmethod__ = True
    __isabstractmethod__ = True

class A(object):
    __metaclass__ = abc.ABCMeta
    @abstractstatic
    def test():
        print 5