gpt4 book ai didi

Transcrypt:继承自 JS 原型(prototype)?

转载 作者:行者123 更新时间:2023-12-03 16:46:37 25 4
gpt4 key购买 nike

有什么方法可以从 JS 原型(prototype)继承 Transcrypt 类吗?我有一个 JS 对象类型,它有很多我需要保留的功能,但我想用 Transcrypt 类中的许多不错的功能来扩展它(特别是,我想补充带有 Transcript 运算符重载的笨重 JS 数学函数)。

我已经尝试了显而易见的:

class MyClass (MyJSClass):
....

但这不起作用,因为 JS 类没有 Transcrypt 的“魔术方法”。

我也试过向 JS 原型(prototype)添加方法:

def add_repr(orig):
def v_repr(self):
return "(inherited JS Object)"
orig.prototype.__repr__ = v_repr

add_repr(MyJSClass)

print (__new__(MyJSClass()))

但在那种情况下,repr 永远不会被调用,因为 Transcrypt 正在寻找其他魔术方法或标识符但没有找到它们,所以它不会去寻找 repr

有没有人想出一种方法,既可以将 JS 原型(prototype)追溯为 Transcrypt 类,也可以从 JS 原型(prototype)继承 Transcrypt 类?

最佳答案

正如您所注意到的,由于支持多重继承和绑定(bind)函数分配,Transcrypt 类在内部不同于 JavaScript 类。

一个干净的解决方案是制作一个 Transcrypt 外观类,它封装相应的 JavaScript 类。

因此要使 Transcrypt 类 Y_tr(和其他类)继承自 JavaScript 类 X_js,定义一个 Transcrypt 类 X_tr 对象 x_jsX_js 的唯一属性(由 X_tr.__init__ 创建)。然后,您可以让 Y_tr 继承自 X_tr 而不是 X_js

X_js 有方法 m_am_b,然后给 X_tr 也用那个名字的方法。方法X_tr.m_a只是调用x_js.m_aX_tr.m_b只是调用x_js.m_b,返回各自的结果。

x_js 的属性可以通过具有相同名称的X_tr 的属性访问。

注意X_trY_tr可以不用__new__来实例化,因为self.x_js = __new__(X_js()) X_tr.__init__ 中完成。

关于Transcrypt:继承自 JS 原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44213824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com