MergeStrategy#
- class astropy.utils.metadata.MergeStrategy[源代码]#
基类:
object
基类,用于定义将来自左、右两个源的元数据合并到单个输出中的策略。
类的主要功能是
merge(cls, left, right)
类方法。这需要left
和right
side参数并返回单个合并输出。第一类属性是
types
. 它被定义为一个元组(left_types,right_types)的列表,指示合并策略适用于哪些输入类型。在确定是否将此合并策略应用于一对(左、右)对象时,将执行以下测试:isinstance(left, left_types) and isinstance(right, right_types)
. 例如::types = [(np.ndarray, np.ndarray), # Two ndarrays (np.ndarray, (list, tuple)), # ndarray and (list or tuple) ((list, tuple), np.ndarray)] # (list or tuple) and ndarray
为了方便起见,
types
可以定义为单个二元组而不是两个元组的列表,例如。types = (np.ndarray, np.ndarray)
.另一个类属性是
enabled
,默认为False
在基类中。通过定义MergeStrategy
新的合并策略会自动注册为可用于合并。但是,默认情况下,新的合并策略是 未启用 . 这可以防止无意中更改正在执行元数据合并操作的无关代码的行为。在大多数情况下(特别是在其他人可能使用的库代码中),建议禁用自定义策略并使用
enable_merge_strategies
上下文管理器本地启用所需的策略。但是,如果有人确信新策略不会产生意外行为,那么可以通过设置enabled
类属性到True
.实例
在这里,我们定义了一个定制的合并策略,它在左右两边使用一个int或float,并返回一个包含两个值的列表。
>>> from astropy.utils.metadata import MergeStrategy >>> class MergeNumbersAsList(MergeStrategy): ... types = ((int, float), (int, float)) # (left_types, right_types) ... ... @classmethod ... def merge(cls, left, right): ... return [left, right]
属性摘要
属性文档
- enabled = False#