哪个Pythonic调用__str __()方法或者转换为str()?

Mig*_*l G 1 python

我有一个字典对象的包装类,我很好奇,如果__repr__在我的类中实现该方法时,首选的是另一个:

class MyClass(object):
  def __init__(self):
    self._obj = dict()
  def __repr__(self):
    return self._obj.__str__()
Run Code Online (Sandbox Code Playgroud)

要么

class MyClass(object):
  def __init__(self):
    self._obj = dict()
  def __repr__(self):
    return str(self._obj)
Run Code Online (Sandbox Code Playgroud)

第二次实施str()对我来说是对的.我只是想确保我没有遗漏任何东西.

Dan*_*man 6

你是对的.您应该避免直接调用双下划线方法:内置函数是Pythonic执行此操作的方法.

(例如len(foo)vs的情况也是如此foo.__len__())

  • 我个人会添加一次你应该使用双下划线方法 - "super().__ init __()" (3认同)