观察者 线段分析/扩展分析 支持无限递归,保留之前序列为@property 形式

This commit is contained in:
YuWuKunCheng
2026-06-06 22:02:47 +08:00
parent dd40f95742
commit 0a7e9dc896
3 changed files with 46 additions and 9 deletions
+29 -3
View File
@@ -435,9 +435,9 @@ class 虚线:
@property @property
def 模式(self) -> str: ... def 模式(self) -> str: ...
@property @property
def 特征序列_显示(self) -> bool: ... def _特征序列_显示(self) -> bool: ...
@特征序列_显示.setter @_特征序列_显示.setter
def 特征序列_显示(self, value: bool) -> None: ... def _特征序列_显示(self, value: bool) -> None: ...
@property @property
def 特征序列(self) -> List[Optional[线段特征]]: ... def 特征序列(self) -> List[Optional[线段特征]]: ...
@property @property
@@ -523,6 +523,8 @@ class 虚线:
class 线段特征: class 线段特征:
@property @property
def 序号(self) -> int: ... def 序号(self) -> int: ...
@序号.setter
def 序号(self, value: int) -> None: ...
@property @property
def 标识(self) -> str: ... def 标识(self) -> str: ...
@标识.setter @标识.setter
@@ -790,6 +792,30 @@ class 观察者:
def 扩展线段序列_扩展线段(self) -> List[虚线]: ... def 扩展线段序列_扩展线段(self) -> List[虚线]: ...
@property @property
def 扩展中枢序列_扩展线段(self) -> List[中枢]: ... def 扩展中枢序列_扩展线段(self) -> List[中枢]: ...
@property
def 线段分析层次(self) -> int: ...
@线段分析层次.setter
def 线段分析层次(self, value: int) -> None: ...
@property
def 扩展线段分析层次(self) -> int: ...
@扩展线段分析层次.setter
def 扩展线段分析层次(self, value: int) -> None: ...
@property
def 混合扩展线段分析层次(self) -> int: ...
@混合扩展线段分析层次.setter
def 混合扩展线段分析层次(self, value: int) -> None: ...
@property
def 线段序列组(self) -> List[List[虚线]]: ...
@property
def 中枢序列组(self) -> List[List[中枢]]: ...
@property
def 扩展线段序列组(self) -> List[List[虚线]]: ...
@property
def 扩展中枢序列组(self) -> List[List[中枢]]: ...
@property
def 混合扩展线段序列组(self) -> List[List[虚线]]: ...
@property
def 混合扩展中枢序列组(self) -> List[List[中枢]]: ...
def 重置基础序列(self) -> None: ... def 重置基础序列(self) -> None: ...
def 增加原始K线(self, 普K: K线) -> None: ... def 增加原始K线(self, 普K: K线) -> None: ...
def 投喂原始数据(self, 时间戳: int, : float, : float, : float, : float, : float) -> None: ... def 投喂原始数据(self, 时间戳: int, : float, : float, : float, : float, : float) -> None: ...
+7 -1
View File
@@ -994,7 +994,13 @@ pub struct 线段特征Py {
impl 线Py { impl 线Py {
#[getter] #[getter]
fn (&self) -> i64 { fn (&self) -> i64 {
self.inner. self.inner..load(Ordering::Relaxed)
}
#[setter]
#[pyo3(name = "序号")]
fn set_序号(&self, value: i64) {
self.inner..store(value, Ordering::Relaxed);
} }
#[getter] #[getter]
+10 -5
View File
@@ -26,6 +26,7 @@ use crate::structure::dash_line::虚线;
use crate::structure::feat_fractal::; use crate::structure::feat_fractal::;
use crate::structure::fractal_obj::; use crate::structure::fractal_obj::;
use crate::types::{, }; use crate::types::{, };
use std::sync::atomic::AtomicI64;
use std::sync::atomic::Ordering; use std::sync::atomic::Ordering;
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
@@ -48,7 +49,7 @@ use std::sync::{Arc, RwLock};
#[derive(Debug)] #[derive(Debug)]
pub struct 线 { pub struct 线 {
/// 特征序列元素编号 /// 特征序列元素编号
pub : i64, pub : AtomicI64,
/// 标识字符串(如 "特征<虚线>" /// 标识字符串(如 "特征<虚线>"
pub : RwLock<String>, pub : RwLock<String>,
/// 所属线段的方向 /// 所属线段的方向
@@ -60,7 +61,7 @@ pub struct 线段特征 {
impl Clone for 线 { impl Clone for 线 {
fn clone(&self) -> Self { fn clone(&self) -> Self {
Self { Self {
: self., : AtomicI64::new(self..load(Ordering::Relaxed)),
: RwLock::new(self..read().unwrap().clone()), : RwLock::new(self..read().unwrap().clone()),
线: self.线, 线: self.线,
: self..clone(), : self..clone(),
@@ -72,7 +73,7 @@ impl 线段特征 {
/// 新建线段特征(给定标识、基础序列和线段方向) /// 新建线段特征(给定标识、基础序列和线段方向)
pub fn new(: String, : Vec<Arc<线>>, 线: ) -> Self { pub fn new(: String, : Vec<Arc<线>>, 线: ) -> Self {
Self { Self {
: 0, : AtomicI64::new(0),
: RwLock::new(), : RwLock::new(),
线, 线,
, ,
@@ -319,10 +320,14 @@ impl 线段特征 {
/// 结构化相等校验 — 逐项递归校验基础序列中的虚线,返回 (是否相等, 差异描述) /// 结构化相等校验 — 逐项递归校验基础序列中的虚线,返回 (是否相等, 差异描述)
pub fn (&self, other: &Self, : f64) -> (bool, String) { pub fn (&self, other: &Self, : f64) -> (bool, String) {
if self. != other. { if self..load(Ordering::Relaxed) != other..load(Ordering::Relaxed) {
return ( return (
false, false,
format!("线段特征: [序号] 不等 A={},B={}", self., other.), format!(
"线段特征: [序号] 不等 A={},B={}",
self..load(Ordering::Relaxed),
other..load(Ordering::Relaxed)
),
); );
} }
if *self..read().unwrap() != *other..read().unwrap() { if *self..read().unwrap() != *other..read().unwrap() {