我一直在学习python中的OOPS,发现它与Java有点不同。在下面的代码中,我编写了一个抽象类并实现了它。这是定义抽象类属性的正确方法吗?
class Vehicle(ABC):
@property
@abstractmethod
def color(self):
pass
@property
@abstractmethod
def regNum(self):
pass
class Car(Vehicle):
def __init__(self,color,regNum):
self.color = color
self.regNum = regNum这样做更好吗?
from abc import ABC, abstractmethod
class Vehicle(ABC):
@abstractmethod
def __init__(self,color,regNum):
self.color = color
self.regNum = regNum
class Car(Vehicle):
def __init__(self,color,regNum):
self.color = color
self.regNum = regNum
car = Car("red","EX9890")发布于 2022-03-28 05:42:26
如果要在抽象基类中定义抽象属性,则不能拥有与这些属性同名的属性,需要在具体子类中定义属性的具体实现:
from abc import ABC, abstractmethod
class Vehicle(ABC):
@property
@abstractmethod
def color(self):
pass
@property
@abstractmethod
def regNum(self):
pass
class Car(Vehicle):
def __init__(self, color, regNum):
self._color = color
self._regNum = regNum
@property
def color(self):
return self._color
@property
def regNum(self):
return self._regNum
c = Car("foo", "bar") # works fine; would not work if abstract methods weren't implementedhttps://stackoverflow.com/questions/71642797
复制相似问题