使用 Python Pointer 类和类型类实现带语法提示的指针时,如何解决实例化时使用 type 函数重新生成类导致实例类型不等于该类的问题?

ID:21187 / 打印

使用 Python Pointer 类和类型类实现带语法提示的指针时,如何解决实例化时使用 type 函数重新生成类导致实例类型不等于该类的问题?

修改导入类的类型

问题:

使用 python pointer 类(作为第一个类继承)和类型类(作为第二个类继承)实现带有语法提示的指针时,如果在实例化时使用 type 函数重新生成一个类,导致实例的类型不等于该类。该如何解决?

已尝试的解决方案:

new 函数移到类的外部,但会增加创建带有类型指针类的难度。

立即学习“Python免费学习笔记(深入)”;

解决方案:

使用 init_subclass 方法,而不是 new 方法。

代码:

class Pointer:      def __init_subclass__(cls, **kwargs):         bases = tuple(set(cls.__bases__) - {Pointer})         assert len(bases) <= 1, '只能再继承一个类'         assert len(bases), '必须再继承一个类'         bases = bases[0]         for fun_name in dir(cls):             if fun_name not in not_transfer_fun and callable(getattr(cls, fun_name)):                 setattr(cls, fun_name, fun_transfer(getattr(cls, fun_name)))         cls.__init__ = __init__         cls.__setattr__ = __setattr__         cls.__getattribute__ = __getattribute__         cls.__value__ = None         print(cls.__class__)         cls.__class__ = cls         cls.__type__ = bases         return cls
上一篇: MySQL 中的相等判断为何有时会表现出“模糊”匹配?
下一篇: 为什么服务端程序退出后端口还会被占用?

作者:admin @ 24资源网   2025-01-14

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。