Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Transcrypt重写方法_Javascript_Python_Transcrypt - Fatal编程技术网

Javascript 使用Transcrypt重写方法

Javascript 使用Transcrypt重写方法,javascript,python,transcrypt,Javascript,Python,Transcrypt,在Python中,重写方法是有效的,如: class A(): def original(self): print("original") def alternative(self): print("alternative") A.original = alternative a = A() a.original() 它将打印备选方案。但是在转换到Javascript之后,您将得到错误:uncaughttypeerror:无法设置函数的原始属性… 当然,这与

在Python中,重写方法是有效的,如:

class A():
    def original(self):
        print("original")

def alternative(self):
    print("alternative")

A.original = alternative
a = A()
a.original()
它将打印
备选方案
。但是在转换到Javascript之后,您将得到错误:
uncaughttypeerror:无法设置函数的原始属性…

当然,这与它被传输到以下位置有关:

var A = __class__ ('A', [object], {
    __module__: __name__,
    get original () {return __get__ (this, function (self) {
        print ('original');
    });}
});
其中,
original
是一个不能以这种方式重写的属性

有解决办法吗?在某些情况下,具有这种行为可能很有用。
致以最诚挚的问候

以下解决方法可以解决此问题:

class A():
    def original (self, anArg):
        print ('Original:', anArg)

def alternative (self, anArg):
    print ('Alternative:', anArg)

a0 = A ()
a0.original ('Time flies like an arrow.')

__pragma__ ('js', '{}', '''Object.defineProperty (A, "original", {
    get: function (self) {return __get__ (this, alternative)}
})''')

a1 = A()
a1.original ('Fruit flies like a banana.')
它将打印:


时间像箭一样飞逝。
另一种选择:像香蕉一样的果蝇。


我添加了一个论点来说明他的解决方案的一般性。

谢谢,这就是我想要的。