え!! class を使わずに class を!?

# 出来らあっ!
Foo = type('Foo', (), dict(bar=1, baz=2))

↑で作られた Foo は↓で作る Foo と同義。

class Foo:
    bar = 1
    baz = 2

 

type ノート

type はオブジェクトの型を教えてくれる組み込み関数だ。

print(type('foo'))  # <class 'str'>
print(type({1:1}))  # <class 'dict'>

と同時に、クラスの型だ。文字列の型が str だったり辞書の型が dict であるように、クラスの型は type だ。だから冒頭のようにクラスを生成できる。この場合、「クラスインスタンスを作る」というふうに言ってしまっていいのだろうか……クラスインスタンスとかいう謎ワード……。

 

概要

というわけで久々の「1日1Python」でした。出来らあっ! がやりたかっただけだが、まあ Pythonista の末席を汚すものとしてたまには Python のニッチな話を書きたかったのだ。