__repr__方法中self和object参数之间有什么区别?

时间:2011-01-01 14:06:54

标签: python

我已经知道旧式类(类Foo()...)和新式类(类Foo(对象)...)之间的区别。但是,它之间的区别是什么:

class Foo(object):
  def __repr__(self):
    return 'foo'

class Foo(object):
  def __repr__(object):
    return 'foo'

感谢。

3 个答案:

答案 0 :(得分:7)

不同之处在于,在一种情况下,您调用了包含实例self的变量,在另一种情况下,您调用了它object。这是唯一的区别。

self变量在Python中是显式的,您可以随意调用它。 self只是每个人为了可读性而使用的惯例。

例如,这很好用:

>>> class Foo(object):
...   def __init__(bippity, colour):
...     bippity.colour = colour
...   def get_colour(_):
...     return _.colour
... 
>>> f = Foo('Blue')
>>> f.get_colour()
'Blue'

但这真令人困惑。 :)

答案 1 :(得分:2)

这就像说;

class Foo(object):
    def __init__(self):
        self.a="foo"
    def __repr__(bar):
        return bar.a

变量名bar没有任何意义。它只是对self的引用。

答案 2 :(得分:2)

正如其他人所指出的,类方法中第一个参数的名称只是一个约定,你可以将它命名为任何你想要的名称。 但不要。总是将其命名为self,否则您会让所有人感到困惑。特别是,您的示例将其命名为object,这会掩盖内置名称,因此更加糟糕。