三方四正
SurroundedPalaces 的四个宫位与五个判断方法。
三方四正是斗数最常用的取象范围。看一件事不能只看本宫, 对宫与两个三合宫的星耀同样作用其上,四宫合看才完整。
本页示例统一用默认的 zh-CN 排盘,因此输出里的展示值都是中文。
四个宫位
| 字段 | 相对本宫 | 传统称呼 | 意义 |
|---|---|---|---|
target | +0 | 本宫 | 事情本身 |
opposite | +6 | 对宫 | 与本宫相对的一面,影响最直接 |
career | +4 | 官禄位 | 三合之一 |
wealth | +8 | 财帛位 | 三合之一 |
四个字段都是 Palace,宫位对象的全部方法都能用。
财帛位、官禄位是相对称呼
wealth 与 career 指的是「相对本宫的三合位置」,不是十二宫里那两个固定的宫名。
以命宫起算时它们恰好落在财帛宫与官禄宫(+8 与 +4),名字就是这么对上的;
以别的宫起算则是别的宫。
三种取法
# 从星盘取
sp = chart.surrounded_palaces("soulPalace")
# 从宫位取
sp = chart.palace("soulPalace").surrounded_palaces()
# 从星耀取(该星所在宫的三方四正)
sp = chart.star("ziweiMaj").surrounded_palaces()三者结果相同,选哪个取决于手上已有什么。
have / not_have / have_one_of
用途 判断四宫合起来有没有指定星耀。
斗数含义 「三方四正见紫微」这类说法,问的正是这四宫里出没出现某颗星, 而不问具体落在其中哪一宫。
签名
def have(self, stars: list[str]) -> bool
def not_have(self, stars: list[str]) -> bool
def have_one_of(self, stars: list[str]) -> bool参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
stars | list[str] | 是 | — | 星耀标识列表;也接受当前排盘语言下的星名 |
返回值
| 方法 | 语义 |
|---|---|
have | 列表中每一颗都出现在这四宫(不要求同宫) |
not_have | 列表中一颗都没出现 |
have_one_of | 列表中至少一颗出现 |
示例
from x_iztro import MajorStar, MinorStar
sp = chart.surrounded_palaces("soulPalace")
print(sp.have([MajorStar.ZIWEI, MajorStar.TIANXIANG]))
print(sp.have_one_of([MajorStar.QISHA, MajorStar.POJUN]))
print(sp.not_have([MinorStar.HUOXING]))输出
True
False
True紫微在命宫、天相在财帛宫,分处两宫但都在这四宫内,因此 have 为真。
边界与陷阱
have_mutagen / not_have_mutagen
用途 判断四宫里有没有某种生年四化。
斗数含义 「三方四正见忌」意味着这组宫位里坐着一颗被生年干化忌的星, 是判断压力来源的常用条件。
签名
def have_mutagen(self, mutagen: Mutagen) -> bool
def not_have_mutagen(self, mutagen: Mutagen) -> bool参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
mutagen | str | 是 | — | 四化标识之一 |
返回值 bool。
示例
from x_iztro import Mutagen
sp = chart.surrounded_palaces("soulPalace")
print("三方四正见禄:", sp.have_mutagen(Mutagen.LU))
print("三方四正见忌:", sp.have_mutagen(Mutagen.JI))
print("三方四正不见科:", sp.not_have_mutagen(Mutagen.KE))输出
三方四正见禄: False
三方四正见忌: False
三方四正不见科: True这张盘的生年四化落在四宫:太阳化禄在子女、武曲化权在财帛、太阴化科在仆役、天同化忌在疾厄。
命宫的三方四正是命宫、迁移、财帛、官禄——只有化权那一颗落在里面,
因此查禄、查忌都是 False,查权则会是 True。
边界与陷阱
这里看的是生年四化打在星上的标记,与宫干飞出的四化无关。 后者请用宫位的飞星族方法。
to_text
用途 三方四正的语义化文本:本宫、对宫、财帛位、官禄位各一段。
签名
def to_text(
self,
*,
knowledge: bool | KnowledgePack | None = None,
config: PatternConfig | None = None,
) -> str参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
knowledge | bool | KnowledgePack | None | 否 | None | 释义材料:True 取排盘语言的内嵌默认包,KnowledgePack 用该包;给出时四宫各自的事实行之后紧跟该宫星耀的释义,见带释义的文本 |
config | PatternConfig | None | 否 | None | 格局判定口径,与 patterns(config) 同一入参;同时作用于文本的格局节与格局释义。None 取默认口径 |
返回值 str——## 命宫 三方四正 标题之下四宫各一段 ### ,标题带角色前缀(本宫、对宫、财帛位、官禄位),
事实行与单宫 to_text 一致。
示例
sp = chart.surrounded_palaces("命宫")
print("\n".join(l for l in sp.to_text().splitlines() if l.startswith("#")))
print(len(sp.to_text()), len(sp.to_text(knowledge=True)))输出
## 命宫 三方四正
### 本宫 · 命宫 (壬午) · 大限 3-12
### 对宫 · 迁移 (戊子) · 大限 63-72
### 财帛位 · 财帛 (戊寅) · 大限 43-52
### 官禄位 · 官禄 (丙戌) · 大限 83-92 [身宫]
924 6312本宫脱离星盘单独构造时没有排盘上下文,调用抛 ValueError;
knowledge=True 而排盘语言没有内嵌包(目前只有 zh-CN 有)抛 IztroError。
完整格式见语义化文本。