我正在向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"
答案 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)