抽象类的属性?

时间:2018-04-27 12:56:52

标签: python abstract-class

我正在向Python过渡,我发现一些令人困惑的事情。 Java或C#中的属性在类声明后声明。 在Python中,属性在承包商中声明: self.x = ...

我希望有一个无法实例化的抽象类,但是从它继承的类具有相同的属性。

使事情变得更加清晰。

我有Shirt抽象类,应该有像

这样的属性
self.type = "Shirt"

所有Shirts(T恤,夹克,外套等......)self.type都是"Shirt"

现在我所拥有的就是这个例子:

class Shirt(object):

__metaclass__ = ABCMeta

class BlackShirt(Shirt):
    def __init__(self):
        self.type = self.__str__()
        self.value = self.Value.Basic.name

    def serialize(self):
        return {
            'type': self.type,
            'value': str(self.value)
        }

    def __str__(self):
        return "Black Shirt"

1 个答案:

答案 0 :(得分:0)

我认为abstractproperty正是您所寻找的,它允许您定义实现必须使用相同名称实现的抽象属性。

from abc import ABC, abstractproperty

class Abstract(ABC):

    @abstractproperty
    def type(self):
        pass


class Shirt(Abstract):

    @property
    def type(self):
       return "Shirt"


shirt = Shirt()
print(shirt.type)