__repr__方法中self和object参数有什么区别?
我已经知道旧式类(class Foo()...)和新式类(class Foo(object)...)之间的区别了。但是,这两者之间还有什么不同呢:
class Foo(object):
def __repr__(self):
return 'foo'
和
class Foo(object):
def __repr__(object):
return 'foo'
谢谢。
3 个回答
2
这就像是在说:
class Foo(object):
def __init__(self):
self.a="foo"
def __repr__(bar):
return bar.a
变量名 bar
本身没有任何意义。它只是指向 self
的一个引用。
2
正如其他人提到的,类方法中的第一个参数名字其实只是个约定,你可以随便起个名字。 但是不要这样做。一定要把它命名为 self
,否则会让大家很困惑。特别是,你的例子里把它命名为 object
,这会和一个内置的名字冲突,真是双重糟糕。
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'
不过,这样写起来就挺让人困惑的。:)