Python中如何实现类似JavaScript的toString方法?
大家好,搜索了好久找不到方法,只好提问了
最近在做爬虫,要把一部分的 JS 转到 Python 来计算,其中有个Math.random().toString(16)语句,在 Python 中没办法转过来,我用random.random()可以得出Math.random()的数,例如0.480366642537。
但是 toString(16)无法找到代替的方法,尝试了hex()和float.hex()都不行。
JS:
>>> (0.480366642537).toString(16)
0.7af94eebc92618
Python:
>>> float.hex(0.480366642537)
0x1.ebe53baf24986p-2
请问各位大佬,我如何能得到一个跟 JS 一样的结果?
Python中如何实现类似JavaScript的toString方法?
6 回复
pyexcejs 试试
在Python里,你可以通过定义类的 __str__ 和 __repr__ 这两个特殊方法(也叫魔术方法)来实现类似JS toString 的功能。
简单来说:
__str__:当你用print(obj)或者str(obj)时调用,目标是返回一个对用户友好的、可读的字符串表示。__repr__:当你直接在解释器里输入对象名,或者用repr(obj)时调用,目标是返回一个对开发者更精确、通常能用于重新创建该对象的字符串表示。在没定义__str__时,print也会回退到使用它。
代码示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 类似 JS 的 toString,用于友好显示
def __str__(self):
return f"Person(name='{self.name}', age={self.age})"
# 用于开发和调试的精确表示
def __repr__(self):
return f"Person('{self.name}', {self.age})"
# 使用示例
p = Person("张三", 30)
print(p) # 输出: Person(name='张三', age=30) -> 调用 __str__
print(str(p)) # 输出: Person(name='张三', age=30) -> 调用 __str__
# 在交互式环境直接输入 p 会显示下面这个
# >>> p
# Person('张三', 30) -> 调用 __repr__
print(repr(p)) # 输出: Person('张三', 30) -> 调用 __repr__
总结:
想实现 toString,主要就是去定义 __str__ 这个方法。
pyexecjs 打错了
感谢,目前是通过 Naked 执行 JS 获得结果,原理是一样的
可能因为不太熟悉原理吧,要恶补。。感谢
其实你那样也没错,只不过他用了科学记数法,p 后面,所以不一样。

