我已经看到了一些实现抽象方法的不同方法,例如:
第一种方法:导入ABC
from abc import ABC
class X(ABC):
@abstractmethod
def abstractmethod(self):
pass
第二种方法:引发NotImplementedError
class X:
def abstractmethod(self):
raise NotImplementedError
我想知道两件事。
1)哪种是最常用的Python抽象处理方式?和
2)我该如何处理变量?
答案 0 :(得分:1)
我认为,这主要取决于偏好,但是从我所看到的代码来看,ABC方式被更广泛地接受,因为它提供了额外的安全保证,即不会让您实例化任何类,该类包含带有以下标记为abstract的方法@abstractmethod
装饰器。
对于变量,您可以像这样使用@property
顶部的@abstractmethod
装饰器
from abc import ABC, abstractmethod
class Test(ABC):
@property
@abstractmethod
def test(self):
pass
class TestImpl(Test):
@property
def test(self):
return 1
Test() # TypeError: Can't instantiate abstract class Test with abstract methods test
TestImpl().test # 1