在研究抽象类的时候,遇到一个关于父类的抽象属性的问题。
示例代码:
import abc
from abc import ABC, abstractmethod
class parent(ABC):
@abc.abstractproperty
def someMethod(self):
return "parent class"
class child(parent):
@property
def someMethod(self):
return "child class"
try:
obj = parent()
print(obj.someMethod)
except Exception as ex:
print(ex)
obj = child()
print(obj.someMethod)
结果:
Can't instantiate abstract class parent without an implementation for abstract method 'someMethod'
child class
如果我们使用@abstractproperty,我们是否需要父类中的属性?
UPD:根据解释器的判断,我们可以创建子类的实例,但不能创建父类的实例?即使具有相同的语义?
