本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

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

网络教程 app 1℃

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

修改导入类的类型

问题:

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

已尝试的解决方案:

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

解决方案:

使用 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

以上就是使用 Python Pointer 类和类型类实现带语法提示的指针时,如何解决实例化时使用 type 函数重新生成类导致实例类型不等于该类的问题?的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » 使用PythonPointer类和类型类实现带语法提示的指针时_如何解决实例化时使用type函数重新生成类导致实例类型不等于该类的问题?

喜欢 (0)