如果有关系,Python 3.2...
以下代码显示“具体类”可以将some_method实现为静态方法或实例方法:
import abc
class SomeAbstractClass(metaclass=abc.ABCMeta):
@abc.abstractmethod
def some_method(self): pass
class ValidConcreteClass1(SomeAbstractClass):
@staticmethod
def some_method():
print("foo!")
class ValidConcreteClass2(SomeAbstractClass):
def some_method(self):
print("foo!")
ValidConcreteClass1.some_method()
instance = ValidConcreteClass2()
instance.some_method()
我的问题是,我能强制实现继承类中的some_method方法为静态吗?我注意到了@abc.abstractstaticmethod,但以下代码仍然可以正常运行。我认为它会拒绝ValidConreteClass2,因为some_method不是静态的:
import abc
class SomeAbstractClass(metaclass=abc.ABCMeta):
@abc.abstractstaticmethod
def some_method(self): pass
class ValidConcreteClass1(SomeAbstractClass):
@staticmethod
def some_method():
print("foo!")
class ValidConcreteClass2(SomeAbstractClass):
def some_method(self):
print("foo!")
ValidConcreteClass1.some_method()
instance = ValidConcreteClass2()
instance.some_method()