Setting __proto__ to None from Python

8 views
Skip to first unread message

mcot

unread,
Jan 11, 2011, 5:18:56 PM1/11/11
to PyV8
This code works well to set the __proto__ of an object to null:

import PyV8

class NewClass(PyV8.JSClass):

def __init__(self):
pass

class Global(PyV8.JSClass):

def __init__(self):
self._nc = NewClass

def getNewClass(self):
return NewClass()

def write(self, val):
print val


with PyV8.JSContext(Global()) as ctx:

ctx.eval(""" x = this.getNewClass() """)
ctx.eval(""" x.__proto__ = null """)
ctx.eval(""" write(x.__proto__) """)

Output: None







How can I do this from python code?

I tried this way but the __proto__ is still set to Object:

import PyV8

class NewClass(PyV8.JSClass):

def __init__(self):
pass

def setProto(self):
self.__proto__ = None

class Global(PyV8.JSClass):

def __init__(self):
self._nc = NewClass

def getNewClass(self):
return NewClass()

def write(self, val):
print val


with PyV8.JSContext(Global()) as ctx:

ctx.eval(""" x = this.getNewClass() """)
ctx.eval(""" x.setProto() """)
ctx.eval(""" write(x.__proto__) """)

Output: [object Object]



mcot

unread,
Jan 12, 2011, 4:33:31 PM1/12/11
to PyV8
I am also having trouble setting it to null in this way:

import PyV8


class NewClass(PyV8.JSClass):

def __init__(self):
pass


class Global(PyV8.JSClass):

def __init__(self):
self.x = NewClass()

def write(self, val):
print val


with PyV8.JSContext(Global()) as ctx:


ctx.eval(""" write( x.__proto__ ) """)
ctx.eval(""" x.__proto__ = null """)
ctx.eval(""" write(x.__proto__) """)

My Output is:

[object Object]
[object Object]
Reply all
Reply to author
Forward
0 new messages