カテゴリごとに異なる名前を持つカテゴリクラスがあります。カテゴリの名前は不明で、良いものと悪いものがあります。すべてのカテゴリは同じ動作を共有するため、カテゴリの種類ごとにサブクラスを作成したくありません。問題この方法でさまざまなカテゴリを作成しようとしているときに来ます:
Category.GOOD
このステートメントは、名前が「良い」に設定されたカテゴリ オブジェクトを返す必要があるため、次のことを試します。
class Category(object):
def __init__(self, name):
self.name = name
@property
def GOOD(self):
category = Category(name='good')
return category
@property
def BAD(self):
category = Category(name='bad')
return category
次に、次の出力でカテゴリを作成して使用します。
c = Category.GOOD
c.name
AttributeError: 'property' object has no attribute 'name'
これが機能しないことに気づき、Java のようなアプローチを試みます。
class Category(object):
GOOD = Category(name='good')
BAD = Category(name='bad')
def __init__(self, name):
self.name = name
ここで得られるのは未定義の名前「Category」エラーです。そのため、このようなカテゴリ オブジェクトを作成する Pythonic な方法があるかどうかを質問します。