From 43cedbd3b7f2fcdbf10a343fd2246271dc40bdbe Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Sun, 18 Oct 2026 16:53:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(len):=20=E6=B3=9B=E5=9E=8B=E7=89=B9?= =?UTF-8?q?=E5=8C=96=E7=BC=BA=E6=96=B9=E6=B3=95=E6=97=B6=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E8=A3=B8=E6=A8=A1=E6=9D=BF=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit len(list[AST*]) 在特化方法尚未生成时回退查找 list.__len__,避免误报没有 __len__ 方法。 --- lib/core/Handles/HandlesExprUtils.py | 6 ++++++ 1 file changed, 6 insertions(+) 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:]: