【发布时间】:2017-08-08 18:01:30
【问题描述】:
不确定这是否可能,但我的目标是创建一个使用枚举器作为子类的基本抽象类。
这是目前为止的代码以及什么是/不工作。我想以某种方式能够在我的“IdealUse”类中引用“class Colors(Enum)”。有什么需要改变的想法吗?
BaseClass.py
from abc import ABCMeta, abstractmethod
from enum import Enum
class Base(metaclass=ABCMeta):
default_color = 'yellow'
@abstractmethod
def get_a(self):
pass
class Colors(Enum):
blue = 1
green = 2
red = 3
Base.register(Colors)
理想使用.py
from abstractbase import Base
class IdealUse(Base):
def __init__(self):
self.value_of_a = self.get_a() # this works
self.ideal_color = self.default_color # this works
self.color_of_sky = self.Colors(1) # does not work
def get_a(self):
return 'working'
【问题讨论】:
-
self.Colors- 这意味着什么?提示 1:没有“颜色”方法/属性。提示 2:the documentation 没有暗示这是预期的行为。 -
听起来您可能不清楚“子类”的含义。 “X 是 Y 的子类”是指“X 是 Y 的一种”,而不是“Y 类具有 X 属性”。
-
感谢回复的用户,我花了几个小时研究和查看文档。这意味着我可能应该在发帖前休息一下。真的,从其他人那里得到了一个更好的视角来描述我在做什么。我认为也许正确的问题和恰当的术语是——如何使枚举器成为抽象类的成员?真的,它可能是......如何让任何东西成为一个班级的成员?换句话说,我想得太多了。我发布了工作代码作为答案。也许它会帮助其他分析瘫痪的初学者。
标签: python enums abstract-class subclass