PhysicalType#

class astropy.units.physical.PhysicalType(unit, physical_types)[源代码]#

基类:object

表示在尺寸上与一组单位兼容的物理类型。

此类的实例应通过以下两种方式之一进行访问 get_physical_type 或使用 physical_type 单位的属性。此类不打算在用户代码中直接实例化。

有关物理类型的列表,请参见 astropy.units.physical

参数:
unitUnit单位

要由物理类型表示的单位。

physical_typesstrsetstr字符串或字符串集

A str 表示单元的物理类型的名称,或 set 包含表示一个或多个物理类型名称的字符串。

笔记

物理类型将被视为等同于 PhysicalType 实例(推荐)或包含物理类型名称的字符串。不建议在包中使用后一种方法,因为某些物理类型的名称将来可能会更改。

为了保持向后兼容性,如果两个物理类型名称用劈开分隔,则两个物理类型名称可以包括在一个字符串中(例如, "momentum/impulse" )。物理类型的字符串表示可以包括下划线而不是空格。

实例

PhysicalType 实例可以通过 physical_type 单位的属性。

>>> import astropy.units as u
>>> u.meter.physical_type
PhysicalType('length')

PhysicalType 实例也可以通过调用 get_physical_type 。此函数将接受单位、包含物理类型名称的字符串或数字1。

>>> u.get_physical_type(u.m ** -3)
PhysicalType('number density')
>>> u.get_physical_type("volume")
PhysicalType('volume')
>>> u.get_physical_type(1)
PhysicalType('dimensionless')

一些单元在尺寸上与多种物理类型兼容。帕斯卡是用来表示压力和应力的,但单位分解等同于能量密度。

>>> pressure = u.get_physical_type("pressure")
>>> pressure
PhysicalType({'energy density', 'pressure', 'stress'})
>>> 'energy density' in pressure
True

可以针对其他物理类型对象或可能包含物理类型名称的字符串测试物理类型是否相等。

>>> area = (u.m ** 2).physical_type
>>> area == u.barn.physical_type
True
>>> area == "area"
True

启用乘法、除法和幂运算,以便可以将物理类型用于量纲分析。

>>> length = u.pc.physical_type
>>> area = (u.cm ** 2).physical_type
>>> length * area
PhysicalType('volume')
>>> area / length
PhysicalType('length')
>>> length ** 3
PhysicalType('volume')

也可以使用包含物理类型名称的字符串来执行。

>>> "length" * area
PhysicalType('volume')
>>> "area" / length
PhysicalType('length')

未知的物理类型被标记为 "unknown"

>>> (u.s ** 13).physical_type
PhysicalType('unknown')

对于未知的物理类型,也可以执行量纲分析。

>>> length_to_19th_power = (u.m ** 19).physical_type
>>> length_to_20th_power = (u.m ** 20).physical_type
>>> length_to_20th_power / length_to_19th_power
PhysicalType('length')