我已经知道旧式类(类Foo()...)和新式类(类Foo(对象)...)之间的区别。但是,它之间的区别是什么:
class Foo(object):
def __repr__(self):
return 'foo'
和
class Foo(object):
def __repr__(object):
return 'foo'
感谢。
答案 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
,这会掩盖内置名称,因此更加糟糕。