使用带有ClassName或self的点语法时的区别

时间:2016-06-16 10:38:40

标签: python

访问类属性时,在该类方法中使用类名Fooself有什么区别?

>>> class Foo(object):
...     class_attribute = "Oh Hai"
...     def bar(self):
...         print(Foo.class_attribute)
...         print(self.class_attribute)
...
>>> Foo().bar()
Oh Hai
Oh Hai

两者都有效。在这两种情况下,我都假设Python查看了类的实例,并且没有找到绑定到它的类属性,因此它继续检查类属性并找到class_attribute

一个比另一个更有效吗?

这只是个人对代码可读性的偏好吗?我看到ClassName.class_attribute在中使用了,这个类看起来很奇怪。

1 个答案:

答案 0 :(得分:0)

class Baz(Foo):
  class_attribute = "Hello, World!"

Baz().bar()

现在他们的行为完全不同了。结果计划,而非效率计划。