This commit is contained in:
bridge
2025-12-14 14:59:25 +08:00
parent 864b03b460
commit 6b0bf25699
9 changed files with 113 additions and 30 deletions

View File

@@ -29,6 +29,26 @@ class Auxiliary:
# 特殊属性(用于存储实例特定数据)
special_data: dict = field(default_factory=dict)
def __deepcopy__(self, memo):
"""
自定义深拷贝:
Sect 对象必须保持单例引用,不能深拷贝,否则会复制整个宗门及其所有成员,
导致内存浪费和潜在的无限递归/哈希错误。
"""
import copy
cls = self.__class__
result = cls.__new__(cls)
memo[id(self)] = result
for k, v in self.__dict__.items():
if k == 'sect':
# 浅拷贝引用
setattr(result, k, v)
else:
# 深拷贝其他属性
setattr(result, k, copy.deepcopy(v, memo))
return result
def get_info(self) -> str:
"""获取简略信息"""
return f"{self.name}"

View File

@@ -32,6 +32,26 @@ class Weapon:
# 特殊属性(如万魂幡的吞噬魂魄计数)
special_data: dict = field(default_factory=dict)
def __deepcopy__(self, memo):
"""
自定义深拷贝:
Sect 对象必须保持单例引用,不能深拷贝,否则会复制整个宗门及其所有成员,
导致内存浪费和潜在的无限递归/哈希错误。
"""
import copy
cls = self.__class__
result = cls.__new__(cls)
memo[id(self)] = result
for k, v in self.__dict__.items():
if k == 'sect':
# 浅拷贝引用
setattr(result, k, v)
else:
# 深拷贝其他属性
setattr(result, k, copy.deepcopy(v, memo))
return result
def get_info(self) -> str:
"""获取简略信息"""
suffix = ""