-2
これが可能かどうかはわかりませんが、私の目標は、列挙子をサブクラスとして使用する基本抽象クラスを作成することです。Python 3.4+を使用して抽象enumサブクラスをインスタンス化および参照する方法は?
これまでのコードと、動作していないコードがあります。どうやら私の "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)
IdealUse.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: 'Colors'メソッド/属性はありません。ヒント2:[ドキュメント](https://docs.python.org/3/library/abc.html)は、これが予想される動作であることを暗示するものではありません。 – user2864740
"サブクラス"の意味を明確にしていないようですね。 「XはYのサブクラスです」とは、「XはYの一種」を意味し、「YクラスはX属性を持ちません」を意味します。 – user2357112
回答したユーザーのおかげで、私は数時間かけて研究を行い、ドキュメンテーションを見直しました。つまり、投稿する前に休憩を取っていたはずです。本当に、私が何をしているかを記述する方法のより良い見通しを得るために、他の人からのコメントがありました。列挙子を抽象クラスのメンバーにするにはどうすればよいのでしょうか?そして、本当に、それは...何かをクラスのメンバーにすることができますか?言い換えれば、私はそれを全部忘れてしまった。私は答えとして作業コードを掲示しました。多分、分析の麻痺を受ける他の初心者に役立つでしょう。 – mjfjones