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 后面,所以不一样。

回到顶部