組み込みではないカスタムクラスの属性(たとえば、など)のみを反復処理する別の方法はあり__dict__
ます__module__
か?たとえば、次のコードでは次のようになります。
class Terrain:
WATER = -1
GRASS = 0
HILL = 1
MOUNTAIN = 2
次のように、これらすべての属性を繰り返すことができます。
for key, value in Terrain.__dict__.items():
print("{: <11}".format(key), " --> ", value)
出力:
MOUNTAIN --> 2
__module__ --> __main__
WATER --> -1
HILL --> 1
__dict__ --> <attribute '__dict__' of 'Terrain' objects>
GRASS --> 0
__weakref__ --> <attribute '__weakref__' of 'Terrain' objects>
__doc__ --> None
整数引数(列挙型の基本バージョン)が必要な場合は、次のように使用できます。
for key, value in Terrain.__dict__.items():
if type(value) is int: # type(value) == int
print("{: <11}".format(key), " --> ", value)
これにより、期待される結果が得られます。
MOUNTAIN --> 2
WATER --> -1
HILL --> 1
GRASS --> 0
たとえば、属性がすべて統合されていない場合など、タイプに関係なく、カスタムクラスの組み込みでない属性のみを反復処理することは可能ですか。おそらく、条件を拡張してより多くのタイプを含めることができますが、他に欠けている方法があるかどうかを知りたいです。