diff --git a/lib/core/Handles/HandlesExprUtils.py b/lib/core/Handles/HandlesExprUtils.py index c80f7d0..5bcd5d3 100644 --- a/lib/core/Handles/HandlesExprUtils.py +++ b/lib/core/Handles/HandlesExprUtils.py @@ -177,6 +177,12 @@ class ExprUtils: FullMethodName: str = f'{ClassName}.{op_name}' if not Gen._has_function(FullMethodName): FullMethodName = f'{ClassName}.{op_name}__' + if not Gen._has_function(FullMethodName) and '[' in ClassName: + # 泛型特化方法尚未生成时,回退到裸模板类的方法(如 list.__len__) + _BareClass: str = ClassName.split('[', 1)[0] + FullMethodName = f'{_BareClass}.{op_name}' + if not Gen._has_function(FullMethodName): + FullMethodName = f'{_BareClass}.{op_name}__' if not Gen._has_function(FullMethodName): # 多继承:沿 MRO 祖先链查找 dunder 方法(先声明父类优先,与 VPC 一致) for anc in Gen._get_mro_chain(ClassName)[1:]: