python2.xとpython3.xでmetaclassを利用する構文が異なっている。 一方でひとつのファイルで両方のバージョンをサポートしたいことがある。 そのような場合の書き方について。 metaclass(HasVersion) 以下のようなmetaclass HasVersionMetaがある。 単にversion番号のような文字列を持っているというだけのmetaclass。 class HasVersionMeta(type): def __new__(cls, name, bases, attrs): attrs["version"] = "0.0.1" return super(HasVersionMeta, cls).__new__(cls, name, bases, attrs)