首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中抽象类的属性

Python中抽象类的属性
EN

Stack Overflow用户
提问于 2022-03-28 05:35:05
回答 1查看 315关注 0票数 0

我一直在学习python中的OOPS,发现它与Java有点不同。在下面的代码中,我编写了一个抽象类并实现了它。这是定义抽象类属性的正确方法吗?

代码语言:javascript
运行
复制
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

这样做更好吗?

代码语言:javascript
运行
复制
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")
EN

回答 1

Stack Overflow用户

发布于 2022-03-28 05:42:26

如果要在抽象基类中定义抽象属性,则不能拥有与这些属性同名的属性,需要在具体子类中定义属性的具体实现:

代码语言:javascript
运行
复制
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 implemented
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71642797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档