astropy.units.format.base のソースコード
# Licensed under a 3-clause BSD style license - see LICENSE.rst
import os
class _FormatterMeta(type):
registry = {}
def __new__(mcls, name, bases, members):
if 'name' in members:
formatter_name = members['name'].lower()
else:
formatter_name = members['name'] = name.lower()
cls = super().__new__(mcls, name, bases, members)
mcls.registry[formatter_name] = cls
return cls
[ドキュメント]class Base(metaclass=_FormatterMeta):
"""
The abstract base class of all unit formats.
"""
def __new__(cls, *args, **kwargs):
# This __new__ is to make it clear that there is no reason to
# instantiate a Formatter--if you try to you'll just get back the
# class
return cls
[ドキュメント] @classmethod
def parse(cls, s):
"""
Convert a string to a unit object.
"""
raise NotImplementedError(
f"Can not parse {cls.__name__}")
[ドキュメント] @classmethod
def to_string(cls, u):
"""
Convert a unit object to a string.
"""
raise NotImplementedError(
f"Can not output in {cls.__name__} format")